Data preparation
220 parsing failures.
row # A tibble: 5 x 4 col row col expected actual expected <int> <int> <chr> <chr> actual 1 301 NA date like %m/%d/%y Jun-07 row 2 302 NA date like %m/%d/%y Jun-07 col 3 303 NA date like %m/%d/%y Jun-07 expected 4 304 NA date like %m/%d/%y Jun-07 actual 5 305 NA date like %m/%d/%y Jun-07
... ................. ... ....................................... ........ ....................................... ...... ....................................... ... ....................................... ... ....................................... ........ ....................................... ...... .......................................
See problems(...) for more details.
20 parsing failures.
row # A tibble: 5 x 4 col row col expected actual expected <int> <int> <chr> <chr> actual 1 2229 NA date like %m/%d/%y **parent but birth date as 8/23/17 row 2 2230 NA date like %m/%d/%y **parent but birth date as 8/23/17 col 3 2231 NA date like %m/%d/%y **parent but birth date as 8/23/17 expected 4 2232 NA date like %m/%d/%y **parent but birth date as 8/23/17 actual 5 2233 NA date like %m/%d/%y **parent but birth date as 8/23/17
... ................. ... ................................................................... ........ ................................................................... ...... ................................................................... ... ................................................................... ... ................................................................... ........ ................................................................... ...... ...................................................................
See problems(...) for more details.
back to TOC
Analysis plan
For all studies we conduct exploratory factor analyses using Pearson correlations to find minimum residual solutions.
For each study, we first examine maximal unrotated and rotated solutions. To determine the maximum number of factors to extract, we use the following rule of thumb: With \(p\) observations per participant, we can extract a maximum of \(k\) factors, where \((p-k)*2 > p+k\), i.e., \(k < p/3\). Thus, with 40 mental capacity items, we can extract a maximum of 13 factors.
To determine how many factors to retain, we use the following preset retention criteria, considering the unrotated maximal solution (unless otherwise noted):
- Each factor must have an eigenvalue >1.0.
- Each factor must individually account for >5% of the total variance in the maximal model.
- After rotation, each factor must be the dominant factor (i.e., the factor with the highest factor loading) for ≥1 mental capacity item.
We then examine and interpret varimax-rotated solutions, extracting only the number of factors that meet these criteria.
Study 1
Study information:
- Design: 2 conditions (beetle, robot), 3-point response scale, “decide what to do” and “have intentions”
- Population: adults
- Date conducted: 2016-07-06 (MTurk)
Demographics
Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
Column `character` joining factor and character vector, coercing into character vector
back to TOC
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 4 and the number of components = 3

Factor Analysis using method = minres
Call: fa(r = d1_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13 h2 u2 com
angry 0.65 -0.04 -0.11 -0.03 0.05 0.22 -0.02 0.04 -0.10 0.17 0.02 -0.20 -0.09 0.58 0.42 1.8
beliefs 0.48 0.40 -0.16 -0.14 0.04 -0.38 0.18 0.09 0.07 0.04 -0.06 -0.09 -0.04 0.64 0.36 4.0
calm 0.68 -0.17 0.01 -0.08 -0.08 0.04 0.08 0.10 -0.04 0.02 -0.01 0.05 -0.07 0.54 0.46 1.3
choices 0.37 0.34 0.36 -0.20 0.06 0.09 -0.25 -0.20 0.12 -0.05 0.17 -0.07 -0.05 0.59 0.41 6.1
communicating 0.11 0.62 0.18 0.14 -0.18 0.30 0.11 0.18 0.15 -0.05 -0.08 -0.01 -0.03 0.65 0.35 2.6
computations -0.33 0.82 -0.07 0.14 -0.03 0.00 -0.02 0.04 0.03 0.00 0.03 -0.06 -0.03 0.81 0.19 1.4
conscious 0.44 0.10 0.44 -0.11 0.17 -0.11 -0.24 0.06 0.08 -0.19 -0.15 -0.21 0.05 0.63 0.37 4.6
depressed 0.74 0.04 -0.37 0.04 -0.14 0.04 -0.17 -0.04 -0.21 -0.05 -0.02 0.06 -0.03 0.79 0.21 2.0
depth 0.26 0.27 0.48 0.28 0.12 -0.09 -0.16 -0.09 0.04 -0.08 -0.10 -0.13 -0.02 0.53 0.47 4.1
desires 0.66 -0.17 0.10 -0.02 -0.03 -0.02 0.35 -0.48 0.13 -0.14 -0.08 0.02 -0.07 0.87 0.13 2.9
disrespected 0.63 0.06 -0.35 0.16 0.07 0.07 -0.13 -0.03 -0.07 -0.03 -0.07 -0.02 0.02 0.59 0.41 2.0
embarrassed 0.52 0.14 -0.40 0.19 0.48 0.18 0.11 0.11 0.12 -0.03 0.09 0.12 0.07 0.82 0.18 4.3
emo_recog 0.37 0.39 -0.10 -0.10 0.01 -0.27 -0.09 0.10 0.04 0.08 -0.14 0.14 0.11 0.46 0.54 4.3
fear 0.72 -0.39 0.14 0.03 -0.18 0.07 0.09 0.12 -0.03 0.13 -0.04 -0.16 0.15 0.82 0.18 2.3
free_will 0.31 0.30 0.32 -0.40 0.15 0.22 -0.07 -0.19 -0.05 0.27 0.10 0.08 0.00 0.65 0.35 6.8
goal 0.41 0.21 0.19 -0.11 0.07 -0.11 0.18 -0.08 0.02 -0.03 0.07 -0.14 0.15 0.36 0.64 4.0
guilt 0.62 0.14 -0.41 0.21 0.43 0.14 0.04 0.02 0.08 0.00 -0.03 -0.03 -0.05 0.84 0.16 3.3
happy 0.76 0.00 -0.33 -0.08 -0.22 0.08 -0.15 -0.03 -0.08 -0.04 -0.08 -0.04 -0.08 0.80 0.20 1.8
hungry 0.55 -0.71 0.22 -0.03 0.08 -0.02 0.06 0.02 0.03 0.03 0.05 0.07 0.01 0.88 0.12 2.2
intentions 0.19 0.62 0.02 -0.16 0.01 0.07 0.26 0.00 -0.20 0.00 0.09 -0.01 0.18 0.60 0.40 2.3
joy 0.76 0.01 -0.39 0.10 -0.17 -0.01 -0.08 -0.07 0.05 0.00 -0.03 0.09 -0.01 0.79 0.21 1.8
love 0.75 0.11 -0.28 0.09 -0.07 -0.09 -0.07 -0.14 -0.03 -0.08 0.00 0.08 0.07 0.71 0.29 1.6
morality 0.31 0.50 -0.13 0.02 -0.07 -0.19 0.08 0.05 -0.04 0.00 0.18 -0.10 0.10 0.46 0.54 2.9
nauseated 0.65 -0.32 0.14 0.08 -0.16 0.05 0.01 -0.06 0.14 0.03 0.03 0.04 0.05 0.61 0.39 2.0
odors 0.49 -0.35 0.37 0.05 0.15 -0.09 -0.03 0.10 0.07 0.01 -0.03 0.11 0.05 0.56 0.44 3.4
pain 0.63 -0.52 0.19 -0.01 -0.04 0.11 0.11 0.19 0.05 -0.01 0.09 -0.01 -0.14 0.80 0.20 2.7
personality 0.44 0.36 -0.19 -0.13 -0.03 -0.27 0.01 0.00 0.24 0.20 -0.06 0.09 -0.17 0.59 0.41 5.2
pleasure 0.69 -0.23 -0.07 0.15 -0.15 -0.08 -0.15 0.06 0.16 -0.06 0.21 0.09 0.18 0.72 0.28 2.3
pride 0.68 0.18 -0.42 0.08 0.04 0.04 0.01 -0.08 -0.14 0.05 -0.06 -0.16 0.01 0.74 0.26 2.2
reasoning 0.34 0.44 0.31 -0.16 0.01 0.21 -0.11 0.01 0.08 0.20 -0.21 0.09 0.12 0.60 0.40 5.4
recognizing 0.10 0.76 0.12 0.13 -0.21 0.15 0.11 0.11 0.15 -0.02 0.00 -0.02 -0.12 0.75 0.25 1.7
remembering 0.14 0.66 0.16 0.10 -0.15 0.13 0.01 -0.05 0.03 -0.15 0.04 0.09 0.10 0.58 0.42 1.7
safe 0.71 -0.29 0.21 -0.12 -0.03 -0.06 0.04 0.06 -0.03 0.09 -0.13 -0.04 0.07 0.68 0.32 1.8
seeing 0.33 0.15 0.50 0.28 0.08 -0.03 -0.07 -0.01 -0.11 -0.01 0.07 0.09 -0.08 0.50 0.50 3.1
self_aware 0.46 0.18 0.22 -0.30 0.09 0.00 0.12 0.13 -0.20 -0.28 -0.21 0.15 -0.07 0.60 0.40 5.6
self_restraint 0.43 0.35 -0.05 -0.15 0.04 -0.19 -0.08 0.07 0.00 0.02 0.17 -0.04 -0.14 0.43 0.57 3.5
sounds 0.27 0.20 0.42 0.38 -0.06 -0.02 0.06 -0.07 -0.11 0.12 -0.07 0.08 0.01 0.48 0.52 4.0
temperature 0.30 0.19 0.46 0.40 0.05 -0.22 0.04 0.00 -0.26 0.12 0.09 0.06 -0.09 0.65 0.35 4.8
thoughts 0.55 0.18 0.10 -0.37 -0.01 0.04 -0.04 0.10 -0.09 -0.15 0.19 0.09 -0.05 0.57 0.43 2.9
tired 0.69 -0.34 0.23 0.07 -0.06 0.05 0.06 0.08 0.07 -0.07 0.09 -0.11 -0.05 0.70 0.30 2.0
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
SS loadings 11.03 5.51 3.15 1.29 0.87 0.84 0.64 0.56 0.51 0.46 0.43 0.38 0.32
Proportion Var 0.28 0.14 0.08 0.03 0.02 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Var 0.28 0.41 0.49 0.52 0.55 0.57 0.58 0.60 0.61 0.62 0.63 0.64 0.65
Proportion Explained 0.42 0.21 0.12 0.05 0.03 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01
Cumulative Proportion 0.42 0.64 0.76 0.81 0.84 0.87 0.90 0.92 0.94 0.96 0.97 0.99 1.00
Mean item complexity = 3.1
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 27.45 with Chi Square of 5073.12
The degrees of freedom for the model are 338 and the objective function was 2.41
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 196 with the empirical chi square 93.35 with prob < 1
The total number of observations was 200 with Likelihood Chi Square = 424.01 with prob < 0.001
Tucker Lewis Index of factoring reliability = 0.951
RMSEA index = 0.046 and the 90 % confidence intervals are 0.024 0.046
BIC = -1366.82
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
Correlation of scores with factors 0.99 0.98 0.95 0.88 0.89 0.84 0.83 0.85 0.78 0.75 0.73 0.74 0.71
Multiple R square of scores with factors 0.98 0.95 0.91 0.77 0.79 0.70 0.70 0.73 0.61 0.57 0.54 0.54 0.50
Minimum correlation of possible factor scores 0.95 0.90 0.82 0.55 0.59 0.40 0.39 0.45 0.23 0.14 0.08 0.08 0.00
Factor Analysis using method = minres
Call: fa(r = d1_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13 h2 u2 com
angry 0.65 -0.04 -0.11 -0.03 0.05 0.22 -0.02 0.04 -0.10 0.17 0.02 -0.20 -0.09 0.58 0.42 1.8
beliefs 0.48 0.40 -0.16 -0.14 0.04 -0.38 0.18 0.09 0.07 0.04 -0.06 -0.09 -0.04 0.64 0.36 4.0
calm 0.68 -0.17 0.01 -0.08 -0.08 0.04 0.08 0.10 -0.04 0.02 -0.01 0.05 -0.07 0.54 0.46 1.3
choices 0.37 0.34 0.36 -0.20 0.06 0.09 -0.25 -0.20 0.12 -0.05 0.17 -0.07 -0.05 0.59 0.41 6.1
communicating 0.11 0.62 0.18 0.14 -0.18 0.30 0.11 0.18 0.15 -0.05 -0.08 -0.01 -0.03 0.65 0.35 2.6
computations -0.33 0.82 -0.07 0.14 -0.03 0.00 -0.02 0.04 0.03 0.00 0.03 -0.06 -0.03 0.81 0.19 1.4
conscious 0.44 0.10 0.44 -0.11 0.17 -0.11 -0.24 0.06 0.08 -0.19 -0.15 -0.21 0.05 0.63 0.37 4.6
depressed 0.74 0.04 -0.37 0.04 -0.14 0.04 -0.17 -0.04 -0.21 -0.05 -0.02 0.06 -0.03 0.79 0.21 2.0
depth 0.26 0.27 0.48 0.28 0.12 -0.09 -0.16 -0.09 0.04 -0.08 -0.10 -0.13 -0.02 0.53 0.47 4.1
desires 0.66 -0.17 0.10 -0.02 -0.03 -0.02 0.35 -0.48 0.13 -0.14 -0.08 0.02 -0.07 0.87 0.13 2.9
disrespected 0.63 0.06 -0.35 0.16 0.07 0.07 -0.13 -0.03 -0.07 -0.03 -0.07 -0.02 0.02 0.59 0.41 2.0
embarrassed 0.52 0.14 -0.40 0.19 0.48 0.18 0.11 0.11 0.12 -0.03 0.09 0.12 0.07 0.82 0.18 4.3
emo_recog 0.37 0.39 -0.10 -0.10 0.01 -0.27 -0.09 0.10 0.04 0.08 -0.14 0.14 0.11 0.46 0.54 4.3
fear 0.72 -0.39 0.14 0.03 -0.18 0.07 0.09 0.12 -0.03 0.13 -0.04 -0.16 0.15 0.82 0.18 2.3
free_will 0.31 0.30 0.32 -0.40 0.15 0.22 -0.07 -0.19 -0.05 0.27 0.10 0.08 0.00 0.65 0.35 6.8
goal 0.41 0.21 0.19 -0.11 0.07 -0.11 0.18 -0.08 0.02 -0.03 0.07 -0.14 0.15 0.36 0.64 4.0
guilt 0.62 0.14 -0.41 0.21 0.43 0.14 0.04 0.02 0.08 0.00 -0.03 -0.03 -0.05 0.84 0.16 3.3
happy 0.76 0.00 -0.33 -0.08 -0.22 0.08 -0.15 -0.03 -0.08 -0.04 -0.08 -0.04 -0.08 0.80 0.20 1.8
hungry 0.55 -0.71 0.22 -0.03 0.08 -0.02 0.06 0.02 0.03 0.03 0.05 0.07 0.01 0.88 0.12 2.2
intentions 0.19 0.62 0.02 -0.16 0.01 0.07 0.26 0.00 -0.20 0.00 0.09 -0.01 0.18 0.60 0.40 2.3
joy 0.76 0.01 -0.39 0.10 -0.17 -0.01 -0.08 -0.07 0.05 0.00 -0.03 0.09 -0.01 0.79 0.21 1.8
love 0.75 0.11 -0.28 0.09 -0.07 -0.09 -0.07 -0.14 -0.03 -0.08 0.00 0.08 0.07 0.71 0.29 1.6
morality 0.31 0.50 -0.13 0.02 -0.07 -0.19 0.08 0.05 -0.04 0.00 0.18 -0.10 0.10 0.46 0.54 2.9
nauseated 0.65 -0.32 0.14 0.08 -0.16 0.05 0.01 -0.06 0.14 0.03 0.03 0.04 0.05 0.61 0.39 2.0
odors 0.49 -0.35 0.37 0.05 0.15 -0.09 -0.03 0.10 0.07 0.01 -0.03 0.11 0.05 0.56 0.44 3.4
pain 0.63 -0.52 0.19 -0.01 -0.04 0.11 0.11 0.19 0.05 -0.01 0.09 -0.01 -0.14 0.80 0.20 2.7
personality 0.44 0.36 -0.19 -0.13 -0.03 -0.27 0.01 0.00 0.24 0.20 -0.06 0.09 -0.17 0.59 0.41 5.2
pleasure 0.69 -0.23 -0.07 0.15 -0.15 -0.08 -0.15 0.06 0.16 -0.06 0.21 0.09 0.18 0.72 0.28 2.3
pride 0.68 0.18 -0.42 0.08 0.04 0.04 0.01 -0.08 -0.14 0.05 -0.06 -0.16 0.01 0.74 0.26 2.2
reasoning 0.34 0.44 0.31 -0.16 0.01 0.21 -0.11 0.01 0.08 0.20 -0.21 0.09 0.12 0.60 0.40 5.4
recognizing 0.10 0.76 0.12 0.13 -0.21 0.15 0.11 0.11 0.15 -0.02 0.00 -0.02 -0.12 0.75 0.25 1.7
remembering 0.14 0.66 0.16 0.10 -0.15 0.13 0.01 -0.05 0.03 -0.15 0.04 0.09 0.10 0.58 0.42 1.7
safe 0.71 -0.29 0.21 -0.12 -0.03 -0.06 0.04 0.06 -0.03 0.09 -0.13 -0.04 0.07 0.68 0.32 1.8
seeing 0.33 0.15 0.50 0.28 0.08 -0.03 -0.07 -0.01 -0.11 -0.01 0.07 0.09 -0.08 0.50 0.50 3.1
self_aware 0.46 0.18 0.22 -0.30 0.09 0.00 0.12 0.13 -0.20 -0.28 -0.21 0.15 -0.07 0.60 0.40 5.6
self_restraint 0.43 0.35 -0.05 -0.15 0.04 -0.19 -0.08 0.07 0.00 0.02 0.17 -0.04 -0.14 0.43 0.57 3.5
sounds 0.27 0.20 0.42 0.38 -0.06 -0.02 0.06 -0.07 -0.11 0.12 -0.07 0.08 0.01 0.48 0.52 4.0
temperature 0.30 0.19 0.46 0.40 0.05 -0.22 0.04 0.00 -0.26 0.12 0.09 0.06 -0.09 0.65 0.35 4.8
thoughts 0.55 0.18 0.10 -0.37 -0.01 0.04 -0.04 0.10 -0.09 -0.15 0.19 0.09 -0.05 0.57 0.43 2.9
tired 0.69 -0.34 0.23 0.07 -0.06 0.05 0.06 0.08 0.07 -0.07 0.09 -0.11 -0.05 0.70 0.30 2.0
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
SS loadings 11.03 5.51 3.15 1.29 0.87 0.84 0.64 0.56 0.51 0.46 0.43 0.38 0.32
Proportion Var 0.28 0.14 0.08 0.03 0.02 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Var 0.28 0.41 0.49 0.52 0.55 0.57 0.58 0.60 0.61 0.62 0.63 0.64 0.65
Proportion Explained 0.42 0.21 0.12 0.05 0.03 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01
Cumulative Proportion 0.42 0.64 0.76 0.81 0.84 0.87 0.90 0.92 0.94 0.96 0.97 0.99 1.00
Mean item complexity = 3.1
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 27.45 with Chi Square of 5073.12
The degrees of freedom for the model are 338 and the objective function was 2.41
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 196 with the empirical chi square 93.35 with prob < 1
The total number of observations was 200 with Likelihood Chi Square = 424.01 with prob < 0.001
Tucker Lewis Index of factoring reliability = 0.951
RMSEA index = 0.046 and the 90 % confidence intervals are 0.024 0.046
BIC = -1366.82
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
Correlation of scores with factors 0.99 0.98 0.95 0.88 0.89 0.84 0.83 0.85 0.78 0.75 0.73 0.74 0.71
Multiple R square of scores with factors 0.98 0.95 0.91 0.77 0.79 0.70 0.70 0.73 0.61 0.57 0.54 0.54 0.50
Minimum correlation of possible factor scores 0.95 0.90 0.82 0.55 0.59 0.40 0.39 0.45 0.23 0.14 0.08 0.08 0.00
[1] 3
[1] 3
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d1_all, nfactors = nfactors_d1_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 h2 u2 com
angry 0.51 0.38 0.14 0.43 0.57 2.0
beliefs 0.55 -0.05 0.30 0.40 0.60 1.6
calm 0.43 0.54 0.16 0.50 0.50 2.1
choices 0.14 0.08 0.58 0.36 0.64 1.2
communicating 0.15 -0.32 0.53 0.41 0.59 1.8
computations 0.06 -0.83 0.33 0.80 0.20 1.3
conscious 0.07 0.32 0.52 0.37 0.63 1.7
depressed 0.77 0.29 0.04 0.68 0.32 1.3
depth -0.04 0.10 0.58 0.35 0.65 1.1
desires 0.35 0.52 0.21 0.44 0.56 2.1
disrespected 0.69 0.22 0.03 0.53 0.47 1.2
embarrassed 0.62 0.09 0.01 0.39 0.61 1.0
emo_recog 0.44 -0.09 0.30 0.29 0.71 1.9
fear 0.31 0.75 0.13 0.68 0.32 1.4
free_will 0.12 0.06 0.49 0.25 0.75 1.1
goal 0.23 0.14 0.42 0.25 0.75 1.8
guilt 0.71 0.14 0.04 0.53 0.47 1.1
happy 0.75 0.35 0.05 0.68 0.32 1.4
hungry 0.03 0.93 -0.06 0.87 0.13 1.0
intentions 0.31 -0.33 0.45 0.41 0.59 2.6
joy 0.79 0.31 0.01 0.73 0.27 1.3
love 0.75 0.28 0.15 0.66 0.34 1.4
morality 0.45 -0.22 0.32 0.36 0.64 2.3
nauseated 0.27 0.67 0.15 0.54 0.46 1.4
odors 0.01 0.66 0.24 0.50 0.50 1.2
pain 0.17 0.81 0.06 0.70 0.30 1.1
personality 0.53 -0.06 0.25 0.34 0.66 1.4
pleasure 0.46 0.55 0.07 0.51 0.49 2.0
pride 0.81 0.14 0.07 0.68 0.32 1.1
reasoning 0.18 -0.02 0.60 0.39 0.61 1.2
recognizing 0.22 -0.45 0.58 0.59 0.41 2.2
remembering 0.19 -0.35 0.57 0.48 0.52 1.9
safe 0.29 0.70 0.24 0.63 0.37 1.6
seeing -0.04 0.24 0.56 0.37 0.63 1.4
self_aware 0.23 0.21 0.41 0.27 0.73 2.1
self_restraint 0.44 -0.01 0.34 0.30 0.70 1.9
sounds -0.01 0.14 0.50 0.27 0.73 1.2
temperature -0.01 0.18 0.52 0.30 0.70 1.2
thoughts 0.38 0.22 0.37 0.33 0.67 2.6
tired 0.24 0.74 0.22 0.64 0.36 1.4
MR1 MR2 MR3
SS loadings 7.18 7.13 4.91
Proportion Var 0.18 0.18 0.12
Cumulative Var 0.18 0.36 0.48
Proportion Explained 0.37 0.37 0.26
Cumulative Proportion 0.37 0.74 1.00
Mean item complexity = 1.6
Test of the hypothesis that 3 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 27.45 with Chi Square of 5073.12
The degrees of freedom for the model are 663 and the objective function was 6.67
The root mean square of the residuals (RMSR) is 0.05
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 196 with the empirical chi square 729.79 with prob < 0.036
The total number of observations was 200 with Likelihood Chi Square = 1219.34 with prob < 2.1e-35
Tucker Lewis Index of factoring reliability = 0.846
RMSEA index = 0.071 and the 90 % confidence intervals are 0.059 NA
BIC = -2293.44
Fit based upon off diagonal values = 0.98
Measures of factor score adequacy
MR1 MR2 MR3
Correlation of scores with factors 0.96 0.98 0.94
Multiple R square of scores with factors 0.93 0.96 0.88
Minimum correlation of possible factor scores 0.85 0.91 0.76
back to TOC
Study 2
Study information:
- Design: 2 conditions (beetle, robot), 3-point response scale, “decide what to do” and “have intentions”
- Population: 7-9yo children
- Date conducted: June - December 2016
Demographics
Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
Column `character` joining factor and character vector, coercing into character vector
back to TOC
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 3 and the number of components = 3

Factor Analysis using method = minres
Call: fa(r = d2_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13 h2 u2 com
angry 0.57 -0.17 -0.04 -0.07 0.05 0.16 0.11 0.06 -0.04 0.01 -0.04 0.02 -0.16 0.44 0.56 1.7
beliefs 0.54 0.23 -0.07 -0.09 0.05 0.24 -0.12 -0.05 -0.01 0.13 0.06 0.08 0.21 0.50 0.50 2.8
calm 0.55 -0.07 0.01 0.02 -0.10 -0.09 -0.14 0.05 -0.01 -0.18 0.10 -0.02 0.10 0.40 0.60 1.8
choices 0.43 0.05 0.26 -0.38 -0.07 0.20 -0.05 -0.13 0.11 0.05 -0.15 0.16 -0.09 0.54 0.46 4.6
communicating 0.09 0.30 0.16 0.30 -0.17 0.03 0.19 0.11 0.29 0.04 0.04 -0.02 -0.12 0.40 0.60 5.9
computations -0.01 0.80 -0.04 0.02 0.08 0.10 -0.09 0.03 0.10 -0.11 0.08 0.10 0.00 0.71 0.29 1.2
conscious 0.36 0.08 0.48 0.21 -0.14 0.01 0.16 -0.12 -0.27 -0.14 -0.04 -0.12 0.01 0.58 0.42 4.2
depressed 0.69 -0.11 -0.13 0.05 -0.06 -0.13 0.12 0.06 0.21 -0.09 -0.15 -0.01 0.00 0.63 0.37 1.7
depth 0.14 0.22 0.36 0.12 0.34 0.02 -0.14 -0.07 -0.02 0.02 0.17 -0.15 -0.07 0.41 0.59 4.8
desires 0.52 -0.19 -0.03 -0.01 -0.08 0.21 -0.07 -0.04 0.02 0.10 0.03 -0.17 0.15 0.42 0.58 2.3
disrespected 0.69 0.00 -0.11 -0.07 -0.03 -0.02 0.16 -0.16 -0.09 0.03 0.10 0.09 0.08 0.58 0.42 1.4
embarrassed 0.53 0.03 -0.30 0.10 0.22 0.34 0.23 -0.06 -0.01 -0.03 0.02 -0.13 -0.05 0.63 0.37 3.7
emo_recog 0.34 0.50 -0.05 0.09 0.11 -0.07 0.22 0.14 -0.09 0.07 -0.02 0.13 0.05 0.49 0.51 3.1
fear 0.55 -0.37 0.11 0.11 -0.08 0.03 0.01 0.17 0.09 0.03 -0.06 -0.25 -0.09 0.58 0.42 2.9
free_will 0.49 0.00 0.32 -0.22 -0.09 0.11 -0.21 -0.18 0.08 0.03 -0.02 -0.03 -0.10 0.51 0.49 3.5
goal 0.35 0.31 -0.03 -0.09 -0.06 0.10 -0.11 0.22 0.02 -0.18 -0.25 -0.04 0.14 0.42 0.58 5.4
guilt 0.58 0.07 -0.18 0.13 0.25 0.19 -0.07 -0.10 -0.07 -0.08 0.14 -0.05 -0.03 0.53 0.47 2.4
happy 0.72 0.09 -0.20 0.18 -0.20 -0.06 -0.01 -0.13 0.09 -0.03 0.12 0.05 -0.09 0.69 0.31 1.8
hungry 0.38 -0.77 0.22 0.02 0.14 -0.04 0.01 -0.08 0.06 0.05 0.00 0.03 0.01 0.81 0.19 1.8
intentions 0.35 0.40 0.15 -0.24 0.11 0.03 0.02 -0.12 0.09 -0.14 0.08 0.05 -0.12 0.43 0.57 4.2
joy 0.70 0.00 -0.26 0.10 -0.18 -0.10 -0.03 -0.05 0.06 -0.01 0.05 0.11 0.02 0.62 0.38 1.6
love 0.60 0.03 -0.20 0.11 0.03 -0.11 0.09 -0.19 -0.05 0.05 0.07 0.03 0.14 0.50 0.50 1.9
morality 0.44 0.37 -0.13 -0.08 0.21 -0.26 -0.05 0.26 -0.18 0.33 0.07 0.03 -0.09 0.69 0.31 5.9
nauseated 0.30 -0.43 0.06 0.11 0.27 0.05 0.00 0.07 0.16 0.06 -0.10 0.02 0.08 0.42 0.58 3.6
odors 0.15 -0.53 0.38 0.06 0.09 0.12 -0.06 0.16 0.06 0.03 0.19 0.09 -0.06 0.55 0.45 3.0
pain 0.45 -0.64 0.21 -0.06 0.07 -0.09 -0.05 -0.04 -0.01 0.10 -0.01 0.06 0.08 0.70 0.30 2.3
personality 0.54 0.29 -0.01 -0.12 0.20 0.12 0.01 0.18 -0.01 0.06 -0.09 0.00 0.09 0.50 0.50 2.6
pleasure 0.60 0.04 -0.18 0.10 -0.23 -0.17 -0.31 0.04 0.01 -0.04 0.08 -0.09 -0.02 0.60 0.40 2.5
pride 0.68 0.14 -0.31 0.06 -0.05 -0.02 0.01 -0.04 -0.01 -0.04 -0.03 0.01 -0.15 0.61 0.39 1.7
reasoning 0.23 0.28 0.36 0.05 -0.16 -0.01 -0.05 0.01 0.05 0.12 -0.06 -0.11 0.22 0.37 0.63 4.8
recognizing 0.20 0.32 0.13 0.10 0.11 0.00 -0.11 0.21 0.06 0.00 0.04 -0.14 0.05 0.26 0.74 4.7
remembering 0.06 0.58 0.17 0.13 -0.05 0.00 0.01 -0.17 0.19 0.28 -0.24 -0.03 -0.08 0.59 0.41 2.8
safe 0.58 -0.08 0.23 0.06 -0.06 -0.06 -0.19 0.16 -0.24 0.00 -0.10 0.09 -0.22 0.59 0.41 2.8
seeing -0.07 0.13 0.26 -0.03 -0.19 -0.08 0.19 -0.08 0.02 0.27 0.20 -0.08 0.02 0.30 0.70 6.0
self_aware 0.27 0.21 0.46 -0.03 -0.10 0.09 0.23 0.00 -0.31 -0.10 -0.09 -0.03 0.01 0.52 0.48 4.2
self_restraint 0.34 0.19 0.15 -0.56 0.11 -0.33 0.20 0.05 0.17 -0.16 0.15 -0.19 0.01 0.76 0.24 4.5
sounds -0.07 0.10 0.40 0.10 -0.18 0.23 0.08 0.23 0.14 -0.08 0.25 0.23 0.06 0.47 0.53 5.6
temperature -0.05 0.34 0.41 0.31 0.34 -0.26 -0.15 -0.23 0.08 -0.15 -0.09 0.08 0.04 0.68 0.32 6.4
thoughts 0.57 0.01 0.18 -0.05 -0.11 -0.16 -0.03 0.03 -0.09 0.03 -0.03 0.15 0.08 0.44 0.56 1.8
tired 0.39 -0.35 0.07 0.11 0.16 -0.16 0.24 0.06 0.12 -0.07 -0.11 0.12 0.05 0.45 0.55 4.7
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
SS loadings 8.25 4.13 2.18 1.05 0.96 0.84 0.73 0.66 0.62 0.54 0.52 0.44 0.40
Proportion Var 0.21 0.10 0.05 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01 0.01 0.01
Cumulative Var 0.21 0.31 0.36 0.39 0.41 0.44 0.45 0.47 0.49 0.50 0.51 0.52 0.53
Proportion Explained 0.39 0.19 0.10 0.05 0.05 0.04 0.03 0.03 0.03 0.03 0.02 0.02 0.02
Cumulative Proportion 0.39 0.58 0.68 0.73 0.78 0.82 0.85 0.88 0.91 0.94 0.96 0.98 1.00
Mean item complexity = 3.4
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 17.08 with Chi Square of 3157.08
The degrees of freedom for the model are 338 and the objective function was 1.79
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 198 with the empirical chi square 142.71 with prob < 1
The total number of observations was 200 with Likelihood Chi Square = 314.7 with prob < 0.81
Tucker Lewis Index of factoring reliability = 1.024
RMSEA index = 0.016 and the 90 % confidence intervals are 0 0.018
BIC = -1476.13
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12
Correlation of scores with factors 0.98 0.96 0.91 0.86 0.83 0.83 0.79 0.77 0.77 0.75 0.73 0.71
Multiple R square of scores with factors 0.95 0.93 0.83 0.74 0.69 0.68 0.62 0.60 0.59 0.56 0.53 0.50
Minimum correlation of possible factor scores 0.90 0.86 0.67 0.48 0.38 0.36 0.23 0.19 0.18 0.12 0.06 0.00
MR13
Correlation of scores with factors 0.67
Multiple R square of scores with factors 0.45
Minimum correlation of possible factor scores -0.10
Factor Analysis using method = minres
Call: fa(r = d2_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13 h2 u2 com
angry 0.57 -0.17 -0.04 -0.07 0.05 0.16 0.11 0.06 -0.04 0.01 -0.04 0.02 -0.16 0.44 0.56 1.7
beliefs 0.54 0.23 -0.07 -0.09 0.05 0.24 -0.12 -0.05 -0.01 0.13 0.06 0.08 0.21 0.50 0.50 2.8
calm 0.55 -0.07 0.01 0.02 -0.10 -0.09 -0.14 0.05 -0.01 -0.18 0.10 -0.02 0.10 0.40 0.60 1.8
choices 0.43 0.05 0.26 -0.38 -0.07 0.20 -0.05 -0.13 0.11 0.05 -0.15 0.16 -0.09 0.54 0.46 4.6
communicating 0.09 0.30 0.16 0.30 -0.17 0.03 0.19 0.11 0.29 0.04 0.04 -0.02 -0.12 0.40 0.60 5.9
computations -0.01 0.80 -0.04 0.02 0.08 0.10 -0.09 0.03 0.10 -0.11 0.08 0.10 0.00 0.71 0.29 1.2
conscious 0.36 0.08 0.48 0.21 -0.14 0.01 0.16 -0.12 -0.27 -0.14 -0.04 -0.12 0.01 0.58 0.42 4.2
depressed 0.69 -0.11 -0.13 0.05 -0.06 -0.13 0.12 0.06 0.21 -0.09 -0.15 -0.01 0.00 0.63 0.37 1.7
depth 0.14 0.22 0.36 0.12 0.34 0.02 -0.14 -0.07 -0.02 0.02 0.17 -0.15 -0.07 0.41 0.59 4.8
desires 0.52 -0.19 -0.03 -0.01 -0.08 0.21 -0.07 -0.04 0.02 0.10 0.03 -0.17 0.15 0.42 0.58 2.3
disrespected 0.69 0.00 -0.11 -0.07 -0.03 -0.02 0.16 -0.16 -0.09 0.03 0.10 0.09 0.08 0.58 0.42 1.4
embarrassed 0.53 0.03 -0.30 0.10 0.22 0.34 0.23 -0.06 -0.01 -0.03 0.02 -0.13 -0.05 0.63 0.37 3.7
emo_recog 0.34 0.50 -0.05 0.09 0.11 -0.07 0.22 0.14 -0.09 0.07 -0.02 0.13 0.05 0.49 0.51 3.1
fear 0.55 -0.37 0.11 0.11 -0.08 0.03 0.01 0.17 0.09 0.03 -0.06 -0.25 -0.09 0.58 0.42 2.9
free_will 0.49 0.00 0.32 -0.22 -0.09 0.11 -0.21 -0.18 0.08 0.03 -0.02 -0.03 -0.10 0.51 0.49 3.5
goal 0.35 0.31 -0.03 -0.09 -0.06 0.10 -0.11 0.22 0.02 -0.18 -0.25 -0.04 0.14 0.42 0.58 5.4
guilt 0.58 0.07 -0.18 0.13 0.25 0.19 -0.07 -0.10 -0.07 -0.08 0.14 -0.05 -0.03 0.53 0.47 2.4
happy 0.72 0.09 -0.20 0.18 -0.20 -0.06 -0.01 -0.13 0.09 -0.03 0.12 0.05 -0.09 0.69 0.31 1.8
hungry 0.38 -0.77 0.22 0.02 0.14 -0.04 0.01 -0.08 0.06 0.05 0.00 0.03 0.01 0.81 0.19 1.8
intentions 0.35 0.40 0.15 -0.24 0.11 0.03 0.02 -0.12 0.09 -0.14 0.08 0.05 -0.12 0.43 0.57 4.2
joy 0.70 0.00 -0.26 0.10 -0.18 -0.10 -0.03 -0.05 0.06 -0.01 0.05 0.11 0.02 0.62 0.38 1.6
love 0.60 0.03 -0.20 0.11 0.03 -0.11 0.09 -0.19 -0.05 0.05 0.07 0.03 0.14 0.50 0.50 1.9
morality 0.44 0.37 -0.13 -0.08 0.21 -0.26 -0.05 0.26 -0.18 0.33 0.07 0.03 -0.09 0.69 0.31 5.9
nauseated 0.30 -0.43 0.06 0.11 0.27 0.05 0.00 0.07 0.16 0.06 -0.10 0.02 0.08 0.42 0.58 3.6
odors 0.15 -0.53 0.38 0.06 0.09 0.12 -0.06 0.16 0.06 0.03 0.19 0.09 -0.06 0.55 0.45 3.0
pain 0.45 -0.64 0.21 -0.06 0.07 -0.09 -0.05 -0.04 -0.01 0.10 -0.01 0.06 0.08 0.70 0.30 2.3
personality 0.54 0.29 -0.01 -0.12 0.20 0.12 0.01 0.18 -0.01 0.06 -0.09 0.00 0.09 0.50 0.50 2.6
pleasure 0.60 0.04 -0.18 0.10 -0.23 -0.17 -0.31 0.04 0.01 -0.04 0.08 -0.09 -0.02 0.60 0.40 2.5
pride 0.68 0.14 -0.31 0.06 -0.05 -0.02 0.01 -0.04 -0.01 -0.04 -0.03 0.01 -0.15 0.61 0.39 1.7
reasoning 0.23 0.28 0.36 0.05 -0.16 -0.01 -0.05 0.01 0.05 0.12 -0.06 -0.11 0.22 0.37 0.63 4.8
recognizing 0.20 0.32 0.13 0.10 0.11 0.00 -0.11 0.21 0.06 0.00 0.04 -0.14 0.05 0.26 0.74 4.7
remembering 0.06 0.58 0.17 0.13 -0.05 0.00 0.01 -0.17 0.19 0.28 -0.24 -0.03 -0.08 0.59 0.41 2.8
safe 0.58 -0.08 0.23 0.06 -0.06 -0.06 -0.19 0.16 -0.24 0.00 -0.10 0.09 -0.22 0.59 0.41 2.8
seeing -0.07 0.13 0.26 -0.03 -0.19 -0.08 0.19 -0.08 0.02 0.27 0.20 -0.08 0.02 0.30 0.70 6.0
self_aware 0.27 0.21 0.46 -0.03 -0.10 0.09 0.23 0.00 -0.31 -0.10 -0.09 -0.03 0.01 0.52 0.48 4.2
self_restraint 0.34 0.19 0.15 -0.56 0.11 -0.33 0.20 0.05 0.17 -0.16 0.15 -0.19 0.01 0.76 0.24 4.5
sounds -0.07 0.10 0.40 0.10 -0.18 0.23 0.08 0.23 0.14 -0.08 0.25 0.23 0.06 0.47 0.53 5.6
temperature -0.05 0.34 0.41 0.31 0.34 -0.26 -0.15 -0.23 0.08 -0.15 -0.09 0.08 0.04 0.68 0.32 6.4
thoughts 0.57 0.01 0.18 -0.05 -0.11 -0.16 -0.03 0.03 -0.09 0.03 -0.03 0.15 0.08 0.44 0.56 1.8
tired 0.39 -0.35 0.07 0.11 0.16 -0.16 0.24 0.06 0.12 -0.07 -0.11 0.12 0.05 0.45 0.55 4.7
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
SS loadings 8.25 4.13 2.18 1.05 0.96 0.84 0.73 0.66 0.62 0.54 0.52 0.44 0.40
Proportion Var 0.21 0.10 0.05 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01 0.01 0.01
Cumulative Var 0.21 0.31 0.36 0.39 0.41 0.44 0.45 0.47 0.49 0.50 0.51 0.52 0.53
Proportion Explained 0.39 0.19 0.10 0.05 0.05 0.04 0.03 0.03 0.03 0.03 0.02 0.02 0.02
Cumulative Proportion 0.39 0.58 0.68 0.73 0.78 0.82 0.85 0.88 0.91 0.94 0.96 0.98 1.00
Mean item complexity = 3.4
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 17.08 with Chi Square of 3157.08
The degrees of freedom for the model are 338 and the objective function was 1.79
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 198 with the empirical chi square 142.71 with prob < 1
The total number of observations was 200 with Likelihood Chi Square = 314.7 with prob < 0.81
Tucker Lewis Index of factoring reliability = 1.024
RMSEA index = 0.016 and the 90 % confidence intervals are 0 0.018
BIC = -1476.13
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12
Correlation of scores with factors 0.98 0.96 0.91 0.86 0.83 0.83 0.79 0.77 0.77 0.75 0.73 0.71
Multiple R square of scores with factors 0.95 0.93 0.83 0.74 0.69 0.68 0.62 0.60 0.59 0.56 0.53 0.50
Minimum correlation of possible factor scores 0.90 0.86 0.67 0.48 0.38 0.36 0.23 0.19 0.18 0.12 0.06 0.00
MR13
Correlation of scores with factors 0.67
Multiple R square of scores with factors 0.45
Minimum correlation of possible factor scores -0.10
[1] 3
[1] 3
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d2_all, nfactors = nfactors_d2_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 h2 u2 com
angry 0.50 0.32 0.03 0.356 0.64 1.7
beliefs 0.55 -0.04 0.19 0.336 0.66 1.3
calm 0.48 0.24 0.12 0.299 0.70 1.6
choices 0.29 0.19 0.33 0.231 0.77 2.6
communicating 0.08 -0.17 0.28 0.111 0.89 1.8
computations 0.16 -0.71 0.35 0.650 0.35 1.6
conscious 0.16 0.22 0.51 0.331 0.67 1.6
depressed 0.65 0.28 0.02 0.504 0.50 1.4
depth 0.04 0.00 0.43 0.182 0.82 1.0
desires 0.44 0.33 0.02 0.301 0.70 1.8
disrespected 0.67 0.20 0.09 0.488 0.51 1.2
embarrassed 0.58 0.05 -0.09 0.346 0.65 1.1
emo_recog 0.42 -0.32 0.28 0.360 0.64 2.7
fear 0.38 0.54 0.07 0.441 0.56 1.8
free_will 0.32 0.28 0.39 0.331 0.67 2.8
goal 0.38 -0.15 0.21 0.212 0.79 1.9
guilt 0.59 0.07 0.04 0.358 0.64 1.0
happy 0.74 0.09 0.05 0.555 0.44 1.0
hungry 0.11 0.88 -0.08 0.786 0.21 1.0
intentions 0.33 -0.16 0.39 0.293 0.71 2.3
joy 0.73 0.14 -0.04 0.555 0.44 1.1
love 0.63 0.11 0.00 0.403 0.60 1.1
morality 0.49 -0.19 0.18 0.306 0.69 1.6
nauseated 0.17 0.49 -0.08 0.270 0.73 1.3
odors -0.11 0.63 0.11 0.425 0.57 1.1
pain 0.21 0.79 0.00 0.662 0.34 1.1
personality 0.54 -0.06 0.27 0.372 0.63 1.5
pleasure 0.60 0.11 0.02 0.375 0.63 1.1
pride 0.77 -0.01 -0.03 0.594 0.41 1.0
reasoning 0.13 -0.02 0.50 0.265 0.73 1.1
recognizing 0.19 -0.15 0.31 0.154 0.85 2.2
remembering 0.10 -0.40 0.41 0.333 0.67 2.1
safe 0.41 0.34 0.30 0.380 0.62 2.8
seeing -0.13 -0.04 0.25 0.083 0.92 1.6
self_aware 0.11 0.07 0.53 0.303 0.70 1.1
self_restraint 0.28 0.01 0.26 0.144 0.86 2.0
sounds -0.18 0.03 0.33 0.144 0.86 1.5
temperature -0.11 -0.15 0.42 0.212 0.79 1.4
thoughts 0.45 0.25 0.31 0.364 0.64 2.4
tired 0.26 0.45 -0.01 0.266 0.73 1.6
MR1 MR2 MR3
SS loadings 7.06 4.23 2.79
Proportion Var 0.18 0.11 0.07
Cumulative Var 0.18 0.28 0.35
Proportion Explained 0.50 0.30 0.20
Cumulative Proportion 0.50 0.80 1.00
Mean item complexity = 1.6
Test of the hypothesis that 3 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 17.08 with Chi Square of 3157.08
The degrees of freedom for the model are 663 and the objective function was 4.79
The root mean square of the residuals (RMSR) is 0.05
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 198 with the empirical chi square 788.89 with prob < 0.00052
The total number of observations was 200 with Likelihood Chi Square = 874.92 with prob < 5.4e-08
Tucker Lewis Index of factoring reliability = 0.894
RMSEA index = 0.047 and the 90 % confidence intervals are 0.032 0.047
BIC = -2637.86
Fit based upon off diagonal values = 0.95
Measures of factor score adequacy
MR1 MR2 MR3
Correlation of scores with factors 0.96 0.96 0.88
Multiple R square of scores with factors 0.91 0.91 0.78
Minimum correlation of possible factor scores 0.82 0.83 0.56
back to TOC
Study 3
Study information:
- Design: 7 conditions (beetle, robot, …) + 2 follow-up conditions, 3-point response scale, “decide what to do” and “have intentions”
- Population: 7-9yo children
- Date conducted: January - June 2017
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 3 and the number of components = 3

Factor Analysis using method = minres
Call: fa(r = d3_all, nfactors = 6, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 h2 u2 com
angry 0.77 -0.08 -0.04 -0.12 -0.08 -0.26 0.70 0.30 1.3
choices 0.54 0.45 0.20 -0.17 -0.12 0.03 0.58 0.42 2.6
conscious 0.46 0.34 0.06 0.06 0.02 0.08 0.34 0.66 2.0
depressed 0.70 -0.25 0.25 0.08 -0.29 -0.03 0.70 0.30 2.0
depth 0.35 0.59 0.01 0.67 0.07 -0.11 0.94 0.06 2.6
disrespected 0.60 -0.24 0.31 0.09 -0.10 0.15 0.55 0.45 2.2
embarrassed 0.53 -0.17 0.44 0.15 0.23 -0.12 0.60 0.40 2.9
fear 0.82 -0.14 -0.30 0.00 0.17 -0.03 0.81 0.19 1.4
guilt 0.52 -0.30 0.39 -0.12 0.29 -0.05 0.61 0.39 3.4
happy 0.67 -0.18 0.04 -0.03 -0.27 -0.04 0.56 0.44 1.5
hungry 0.74 0.01 -0.55 -0.05 0.08 -0.07 0.87 0.13 1.9
love 0.65 -0.27 0.07 0.03 0.19 0.36 0.66 0.34 2.2
nauseated 0.49 0.06 -0.14 -0.08 -0.12 0.06 0.28 0.72 1.4
odors 0.63 0.03 -0.44 -0.13 0.06 -0.01 0.61 0.39 1.9
pain 0.74 -0.13 -0.30 0.10 0.03 -0.11 0.68 0.32 1.5
pride 0.69 -0.25 0.26 0.01 -0.10 -0.09 0.63 0.37 1.7
reasoning 0.39 0.58 0.07 -0.13 0.00 0.22 0.56 0.44 2.2
remembering 0.32 0.56 0.30 -0.33 0.21 -0.16 0.69 0.31 3.6
temperature 0.39 0.49 0.07 -0.06 -0.15 -0.03 0.42 0.58 2.2
tired 0.77 0.06 -0.11 0.06 0.00 0.22 0.65 0.35 1.2
MR1 MR2 MR3 MR4 MR5 MR6
SS loadings 7.37 2.03 1.44 0.72 0.49 0.42
Proportion Var 0.37 0.10 0.07 0.04 0.02 0.02
Cumulative Var 0.37 0.47 0.54 0.58 0.60 0.62
Proportion Explained 0.59 0.16 0.12 0.06 0.04 0.03
Cumulative Proportion 0.59 0.75 0.87 0.93 0.97 1.00
Mean item complexity = 2.1
Test of the hypothesis that 6 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 11.71 with Chi Square of 1399.04
The degrees of freedom for the model are 85 and the objective function was 0.98
The root mean square of the residuals (RMSR) is 0.03
The df corrected root mean square of the residuals is 0.04
The harmonic number of observations is 128 with the empirical chi square 38.14 with prob < 1
The total number of observations was 128 with Likelihood Chi Square = 113.1 with prob < 0.022
Tucker Lewis Index of factoring reliability = 0.946
RMSEA index = 0.06 and the 90 % confidence intervals are 0.02 0.074
BIC = -299.32
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6
Correlation of scores with factors 0.98 0.93 0.92 0.92 0.77 0.74
Multiple R square of scores with factors 0.96 0.87 0.85 0.84 0.59 0.55
Minimum correlation of possible factor scores 0.92 0.75 0.70 0.68 0.17 0.10
Factor Analysis using method = minres
Call: fa(r = d3_all, nfactors = 6, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 h2 u2 com
angry 0.77 -0.08 -0.04 -0.12 -0.08 -0.26 0.70 0.30 1.3
choices 0.54 0.45 0.20 -0.17 -0.12 0.03 0.58 0.42 2.6
conscious 0.46 0.34 0.06 0.06 0.02 0.08 0.34 0.66 2.0
depressed 0.70 -0.25 0.25 0.08 -0.29 -0.03 0.70 0.30 2.0
depth 0.35 0.59 0.01 0.67 0.07 -0.11 0.94 0.06 2.6
disrespected 0.60 -0.24 0.31 0.09 -0.10 0.15 0.55 0.45 2.2
embarrassed 0.53 -0.17 0.44 0.15 0.23 -0.12 0.60 0.40 2.9
fear 0.82 -0.14 -0.30 0.00 0.17 -0.03 0.81 0.19 1.4
guilt 0.52 -0.30 0.39 -0.12 0.29 -0.05 0.61 0.39 3.4
happy 0.67 -0.18 0.04 -0.03 -0.27 -0.04 0.56 0.44 1.5
hungry 0.74 0.01 -0.55 -0.05 0.08 -0.07 0.87 0.13 1.9
love 0.65 -0.27 0.07 0.03 0.19 0.36 0.66 0.34 2.2
nauseated 0.49 0.06 -0.14 -0.08 -0.12 0.06 0.28 0.72 1.4
odors 0.63 0.03 -0.44 -0.13 0.06 -0.01 0.61 0.39 1.9
pain 0.74 -0.13 -0.30 0.10 0.03 -0.11 0.68 0.32 1.5
pride 0.69 -0.25 0.26 0.01 -0.10 -0.09 0.63 0.37 1.7
reasoning 0.39 0.58 0.07 -0.13 0.00 0.22 0.56 0.44 2.2
remembering 0.32 0.56 0.30 -0.33 0.21 -0.16 0.69 0.31 3.6
temperature 0.39 0.49 0.07 -0.06 -0.15 -0.03 0.42 0.58 2.2
tired 0.77 0.06 -0.11 0.06 0.00 0.22 0.65 0.35 1.2
MR1 MR2 MR3 MR4 MR5 MR6
SS loadings 7.37 2.03 1.44 0.72 0.49 0.42
Proportion Var 0.37 0.10 0.07 0.04 0.02 0.02
Cumulative Var 0.37 0.47 0.54 0.58 0.60 0.62
Proportion Explained 0.59 0.16 0.12 0.06 0.04 0.03
Cumulative Proportion 0.59 0.75 0.87 0.93 0.97 1.00
Mean item complexity = 2.1
Test of the hypothesis that 6 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 11.71 with Chi Square of 1399.04
The degrees of freedom for the model are 85 and the objective function was 0.98
The root mean square of the residuals (RMSR) is 0.03
The df corrected root mean square of the residuals is 0.04
The harmonic number of observations is 128 with the empirical chi square 38.14 with prob < 1
The total number of observations was 128 with Likelihood Chi Square = 113.1 with prob < 0.022
Tucker Lewis Index of factoring reliability = 0.946
RMSEA index = 0.06 and the 90 % confidence intervals are 0.02 0.074
BIC = -299.32
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6
Correlation of scores with factors 0.98 0.93 0.92 0.92 0.77 0.74
Multiple R square of scores with factors 0.96 0.87 0.85 0.84 0.59 0.55
Minimum correlation of possible factor scores 0.92 0.75 0.70 0.68 0.17 0.10
[1] 3
[1] 3
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d3_all, nfactors = nfactors_d3_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR3 MR2 h2 u2 com
angry 0.54 0.50 0.24 0.59 0.41 2.4
choices 0.15 0.26 0.69 0.57 0.43 1.4
conscious 0.22 0.17 0.51 0.34 0.66 1.6
depressed 0.29 0.70 0.12 0.60 0.40 1.4
depth 0.16 0.02 0.51 0.28 0.72 1.2
disrespected 0.18 0.69 0.10 0.52 0.48 1.2
embarrassed 0.06 0.67 0.16 0.48 0.52 1.1
fear 0.78 0.40 0.13 0.78 0.22 1.6
guilt 0.10 0.68 0.04 0.47 0.53 1.0
happy 0.42 0.54 0.13 0.48 0.52 2.0
hungry 0.91 0.12 0.17 0.87 0.13 1.1
love 0.39 0.55 0.05 0.46 0.54 1.8
nauseated 0.42 0.19 0.23 0.26 0.74 2.0
odors 0.74 0.11 0.18 0.59 0.41 1.2
pain 0.72 0.35 0.10 0.65 0.35 1.5
pride 0.28 0.73 0.12 0.63 0.37 1.3
reasoning 0.14 0.02 0.71 0.52 0.48 1.1
remembering -0.03 0.11 0.65 0.44 0.56 1.1
temperature 0.15 0.06 0.63 0.42 0.58 1.1
tired 0.57 0.39 0.34 0.60 0.40 2.5
MR1 MR3 MR2
SS loadings 3.97 3.87 2.72
Proportion Var 0.20 0.19 0.14
Cumulative Var 0.20 0.39 0.53
Proportion Explained 0.38 0.37 0.26
Cumulative Proportion 0.38 0.74 1.00
Mean item complexity = 1.5
Test of the hypothesis that 3 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 11.71 with Chi Square of 1399.04
The degrees of freedom for the model are 133 and the objective function was 1.77
The root mean square of the residuals (RMSR) is 0.05
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 128 with the empirical chi square 98.63 with prob < 0.99
The total number of observations was 128 with Likelihood Chi Square = 208.44 with prob < 3.2e-05
Tucker Lewis Index of factoring reliability = 0.909
RMSEA index = 0.074 and the 90 % confidence intervals are 0.049 0.084
BIC = -436.88
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR3 MR2
Correlation of scores with factors 0.96 0.92 0.90
Multiple R square of scores with factors 0.91 0.85 0.80
Minimum correlation of possible factor scores 0.83 0.70 0.61
back to TOC
Subscales
Reliability (and intercorrelations - see alpha)
Call: scoreItems(keys = keys.list, items = d3_all, min = 0, max = 1)
(Unstandardized) Alpha:
SOUL BODY MIND
alpha 0.87 0.9 0.8
Standard errors of unstandardized Alpha:
SOUL BODY MIND
ASE 0.036 0.032 0.049
Average item correlation:
SOUL BODY MIND
average.r 0.49 0.57 0.4
Guttman 6* reliability:
SOUL BODY MIND
Lambda.6 0.89 0.92 0.82
Signal/Noise based upon av.r :
SOUL BODY MIND
Signal/Noise 6.8 9.1 4.1
Scale intercorrelations corrected for attenuation
raw correlations below the diagonal, alpha on the diagonal
corrected correlations above the diagonal:
SOUL BODY MIND
SOUL 0.87 0.72 0.37
BODY 0.63 0.90 0.51
MIND 0.31 0.43 0.80
In order to see the item by scale loadings and frequency counts of the data
print with the short option = FALSEOmega
Call: omega(m = d3_all, plot = F)
Alpha: 0.91
G.6: 0.94
Omega Hierarchical: 0.63
Omega H asymptotic: 0.67
Omega Total 0.94
Schmid Leiman Factor loadings greater than 0.2
g F1* F2* F3* h2 u2 p2
angry 0.64 0.28 0.30 0.59 0.41 0.69
choices 0.43 0.61 0.57 0.43 0.32
conscious 0.38 0.43 0.34 0.66 0.42
depressed 0.55 0.54 0.60 0.40 0.51
depth 0.26 0.45 0.28 0.72 0.24
disrespected 0.47 0.54 0.52 0.48 0.43
embarrassed 0.40 0.55 0.48 0.52 0.33
fear 0.71 0.49 0.78 0.22 0.65
guilt 0.39 0.56 0.47 0.53 0.33
happy 0.55 0.20 0.37 0.48 0.52 0.64
hungry 0.68 0.64 0.87 0.13 0.52
love 0.52 0.39 0.46 0.54 0.59
nauseated 0.42 0.25 0.26 0.74 0.67
odors 0.57 0.52 0.59 0.41 0.54
pain 0.64 0.46 0.65 0.35 0.64
pride 0.56 0.56 0.63 0.37 0.49
reasoning 0.31 0.64 0.52 0.48 0.18
remembering 0.23 0.61 0.44 0.56 0.12
temperature 0.31 0.57 0.42 0.58 0.23
tired 0.64 0.32 0.21 0.60 0.40 0.69
With eigenvalues of:
g F1* F2* F3*
5.1 1.5 2.0 2.0
general/max 2.49 max/min = 1.36
mean percent general = 0.46 with sd = 0.18 and cv of 0.4
Explained Common Variance of the general factor = 0.48
The degrees of freedom are 133 and the fit is 1.77
The number of observations was 128 with Chi Square = 208.44 with prob < 3.2e-05
The root mean square of the residuals is 0.05
The df corrected root mean square of the residuals is 0.05
RMSEA index = 0.074 and the 10 % confidence intervals are 0.049 0.084
BIC = -436.88
Compare this with the adequacy of just a general factor and no group factors
The degrees of freedom for just the general factor are 170 and the fit is 5.11
The number of observations was 128 with Chi Square = 607.41 with prob < 1.8e-50
The root mean square of the residuals is 0.16
The df corrected root mean square of the residuals is 0.17
RMSEA index = 0.149 and the 10 % confidence intervals are 0.13 0.155
BIC = -217.44
Measures of factor score adequacy
g F1* F2* F3*
Correlation of scores with factors 0.82 0.73 0.80 0.85
Multiple R square of scores with factors 0.67 0.53 0.65 0.72
Minimum correlation of factor score estimates 0.34 0.05 0.29 0.45
Total, General and Subset omega for each subset
g F1* F2* F3*
Omega total for total scores and subscales 0.94 0.89 0.88 0.81
Omega general for total scores and subscales 0.63 0.58 0.47 0.20
Omega group for total scores and subscales 0.22 0.31 0.41 0.61
Study 4
Study information:
- Design: 7 conditions (beetle, robot, …) + 2 follow-up conditions (doll, teddy bear), 3-point response scale, “decide what to do” and “have intentions”
- Population: 4-6yo children
- Date conducted: March 2017 - present
Demographics
Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
Column `character` joining factor and character vector, coercing into character vector
back to TOC
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
A loading greater than abs(1) was detected. Examine the loadings carefully.The estimated weights for the factor scores are probably incorrect. Try a different factor extraction method.
An ultra-Heywood case was detected. Examine the results carefully
Parallel analysis suggests that the number of factors = 2 and the number of components = 1

Factor Analysis using method = minres
Call: fa(r = d4_all, nfactors = 6, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 h2 u2 com
angry 0.67 -0.02 -0.20 -0.41 0.13 0.02 0.68 0.3238 2.0
choices 0.53 0.08 0.10 0.14 0.21 0.18 0.40 0.6042 1.9
conscious 0.57 0.56 -0.53 0.05 -0.26 0.04 1.00 0.0015 3.4
depressed 0.61 -0.18 -0.20 -0.06 0.29 0.22 0.58 0.4184 2.2
depth 0.43 0.31 0.07 -0.01 0.09 0.08 0.30 0.6981 2.1
disrespected 0.66 -0.06 -0.24 -0.20 0.15 -0.16 0.58 0.4173 1.8
embarrassed 0.55 -0.04 0.07 0.13 -0.05 -0.36 0.46 0.5369 1.9
fear 0.60 -0.13 0.16 0.10 -0.21 0.09 0.47 0.5347 1.6
guilt 0.50 0.17 0.22 0.02 0.15 -0.03 0.35 0.6478 1.9
happy 0.68 -0.19 -0.13 0.40 0.06 -0.07 0.69 0.3080 1.9
hungry 0.74 -0.20 0.22 -0.19 -0.10 -0.04 0.69 0.3127 1.5
love 0.59 -0.27 -0.12 0.36 -0.05 0.15 0.59 0.4133 2.4
nauseated 0.65 -0.19 0.04 -0.03 0.11 -0.24 0.53 0.4679 1.5
odors 0.62 -0.18 0.17 -0.20 -0.31 0.16 0.61 0.3906 2.3
pain 0.53 0.01 -0.11 -0.10 -0.13 -0.21 0.37 0.6327 1.6
pride 0.66 -0.14 -0.12 0.15 -0.09 0.06 0.50 0.4993 1.3
reasoning 0.51 0.23 0.15 -0.15 -0.03 0.03 0.36 0.6428 1.8
remembering 0.41 0.24 0.38 0.06 -0.04 0.02 0.37 0.6262 2.7
temperature 0.50 0.43 0.19 0.20 0.13 -0.09 0.53 0.4659 2.8
tired 0.72 0.03 0.10 -0.11 0.00 0.12 0.56 0.4423 1.2
MR1 MR2 MR3 MR4 MR5 MR6
SS loadings 7.04 1.04 0.86 0.74 0.49 0.44
Proportion Var 0.35 0.05 0.04 0.04 0.02 0.02
Cumulative Var 0.35 0.40 0.45 0.48 0.51 0.53
Proportion Explained 0.66 0.10 0.08 0.07 0.05 0.04
Cumulative Proportion 0.66 0.76 0.84 0.91 0.96 1.00
Mean item complexity = 2
Test of the hypothesis that 6 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 8.76 with Chi Square of 994.76
The degrees of freedom for the model are 85 and the objective function was 0.89
The root mean square of the residuals (RMSR) is 0.03
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 120 with the empirical chi square 50.27 with prob < 1
The total number of observations was 122 with Likelihood Chi Square = 97.45 with prob < 0.17
Tucker Lewis Index of factoring reliability = 0.964
RMSEA index = 0.047 and the 90 % confidence intervals are 0 0.063
BIC = -310.9
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6
Correlation of scores with factors 0.97 0.90 0.88 0.82 0.77 0.69
Multiple R square of scores with factors 0.95 0.81 0.78 0.67 0.59 0.48
Minimum correlation of possible factor scores 0.89 0.63 0.56 0.34 0.19 -0.05
Factor Analysis using method = minres
Call: fa(r = d4_all, nfactors = 6, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 h2 u2 com
angry 0.67 -0.02 -0.20 -0.41 0.13 0.02 0.68 0.3238 2.0
choices 0.53 0.08 0.10 0.14 0.21 0.18 0.40 0.6042 1.9
conscious 0.57 0.56 -0.53 0.05 -0.26 0.04 1.00 0.0015 3.4
depressed 0.61 -0.18 -0.20 -0.06 0.29 0.22 0.58 0.4184 2.2
depth 0.43 0.31 0.07 -0.01 0.09 0.08 0.30 0.6981 2.1
disrespected 0.66 -0.06 -0.24 -0.20 0.15 -0.16 0.58 0.4173 1.8
embarrassed 0.55 -0.04 0.07 0.13 -0.05 -0.36 0.46 0.5369 1.9
fear 0.60 -0.13 0.16 0.10 -0.21 0.09 0.47 0.5347 1.6
guilt 0.50 0.17 0.22 0.02 0.15 -0.03 0.35 0.6478 1.9
happy 0.68 -0.19 -0.13 0.40 0.06 -0.07 0.69 0.3080 1.9
hungry 0.74 -0.20 0.22 -0.19 -0.10 -0.04 0.69 0.3127 1.5
love 0.59 -0.27 -0.12 0.36 -0.05 0.15 0.59 0.4133 2.4
nauseated 0.65 -0.19 0.04 -0.03 0.11 -0.24 0.53 0.4679 1.5
odors 0.62 -0.18 0.17 -0.20 -0.31 0.16 0.61 0.3906 2.3
pain 0.53 0.01 -0.11 -0.10 -0.13 -0.21 0.37 0.6327 1.6
pride 0.66 -0.14 -0.12 0.15 -0.09 0.06 0.50 0.4993 1.3
reasoning 0.51 0.23 0.15 -0.15 -0.03 0.03 0.36 0.6428 1.8
remembering 0.41 0.24 0.38 0.06 -0.04 0.02 0.37 0.6262 2.7
temperature 0.50 0.43 0.19 0.20 0.13 -0.09 0.53 0.4659 2.8
tired 0.72 0.03 0.10 -0.11 0.00 0.12 0.56 0.4423 1.2
MR1 MR2 MR3 MR4 MR5 MR6
SS loadings 7.04 1.04 0.86 0.74 0.49 0.44
Proportion Var 0.35 0.05 0.04 0.04 0.02 0.02
Cumulative Var 0.35 0.40 0.45 0.48 0.51 0.53
Proportion Explained 0.66 0.10 0.08 0.07 0.05 0.04
Cumulative Proportion 0.66 0.76 0.84 0.91 0.96 1.00
Mean item complexity = 2
Test of the hypothesis that 6 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 8.76 with Chi Square of 994.76
The degrees of freedom for the model are 85 and the objective function was 0.89
The root mean square of the residuals (RMSR) is 0.03
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 120 with the empirical chi square 50.27 with prob < 1
The total number of observations was 122 with Likelihood Chi Square = 97.45 with prob < 0.17
Tucker Lewis Index of factoring reliability = 0.964
RMSEA index = 0.047 and the 90 % confidence intervals are 0 0.063
BIC = -310.9
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6
Correlation of scores with factors 0.97 0.90 0.88 0.82 0.77 0.69
Multiple R square of scores with factors 0.95 0.81 0.78 0.67 0.59 0.48
Minimum correlation of possible factor scores 0.89 0.63 0.56 0.34 0.19 -0.05
[1] 2
[1] 2
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d4_all, nfactors = nfactors_d4_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 h2 u2 com
angry 0.59 0.30 0.44 0.56 1.5
choices 0.37 0.40 0.29 0.71 2.0
conscious 0.35 0.41 0.29 0.71 1.9
depressed 0.61 0.18 0.40 0.60 1.2
depth 0.17 0.52 0.30 0.70 1.2
disrespected 0.62 0.25 0.45 0.55 1.3
embarrassed 0.46 0.30 0.30 0.70 1.7
fear 0.53 0.29 0.36 0.64 1.5
guilt 0.27 0.50 0.32 0.68 1.5
happy 0.67 0.21 0.49 0.51 1.2
hungry 0.66 0.34 0.55 0.45 1.5
love 0.62 0.11 0.40 0.60 1.1
nauseated 0.62 0.25 0.45 0.55 1.3
odors 0.55 0.27 0.37 0.63 1.5
pain 0.47 0.26 0.28 0.72 1.6
pride 0.65 0.21 0.47 0.53 1.2
reasoning 0.27 0.51 0.34 0.66 1.5
remembering 0.12 0.54 0.31 0.69 1.1
temperature 0.15 0.66 0.46 0.54 1.1
tired 0.56 0.47 0.53 0.47 1.9
MR1 MR2
SS loadings 4.96 2.83
Proportion Var 0.25 0.14
Cumulative Var 0.25 0.39
Proportion Explained 0.64 0.36
Cumulative Proportion 0.64 1.00
Mean item complexity = 1.4
Test of the hypothesis that 2 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 8.76 with Chi Square of 994.76
The degrees of freedom for the model are 151 and the objective function was 2.16
The root mean square of the residuals (RMSR) is 0.06
The df corrected root mean square of the residuals is 0.07
The harmonic number of observations is 120 with the empirical chi square 177.45 with prob < 0.07
The total number of observations was 122 with Likelihood Chi Square = 242.36 with prob < 3.4e-06
Tucker Lewis Index of factoring reliability = 0.855
RMSEA index = 0.078 and the 90 % confidence intervals are 0.054 0.087
BIC = -483.05
Fit based upon off diagonal values = 0.97
Measures of factor score adequacy
MR1 MR2
Correlation of scores with factors 0.91 0.83
Multiple R square of scores with factors 0.82 0.70
Minimum correlation of possible factor scores 0.65 0.39
back to TOC
Big factor loadings table for all studies (Studies 1-4)
Joining, by = "capacity"
Joining, by = "capacity"
Joining, by = c("order1_manual", "capacity")
Mean factor scores
Studies 1-2
Joining, by = c("study", "subid", "character", "age", "gender", "ethnicity", "trialNum", "bgColor", "capacity", "capWording", "hoverTime", "rt", "response", "responseNum", "age_group", "responseNumC")
Column `study` joining factors with different levels, coercing to character vectorColumn `character` joining factors with different levels, coercing to character vectorColumn `gender` joining factors with different levels, coercing to character vectorColumn `ethnicity` joining factors with different levels, coercing to character vectorColumn `capWording` joining factors with different levels, coercing to character vectorColumn `response` joining factors with different levels, coercing to character vectorJoining, by = "subid"
Linear mixed model fit by REML ['lmerMod']
Formula: score ~ character * factor * age_group + (1 | subid)
Data: tempC
REML criterion at convergence: 86761.5
Scaled residuals:
Min 1Q Median 3Q Max
-4.3061 -0.6245 0.0334 0.6193 3.0480
Random effects:
Groups Name Variance Std.Dev.
subid (Intercept) 0.2320 0.4816
Residual 0.3495 0.5912
Number of obs: 47532, groups: subid, 400
Fixed effects:
Estimate Std. Error t value
(Intercept) -0.001269 0.024249 -0.05
characterrobot -0.248788 0.024249 -10.26
factorfactor1 0.007584 0.003837 1.98
factorfactor3 0.003174 0.003837 0.83
age_groupchildren 0.183383 0.024249 7.56
characterrobot:factorfactor1 0.276372 0.003837 72.02
characterrobot:factorfactor3 0.373325 0.003837 97.29
characterrobot:age_groupchildren 0.043278 0.024249 1.78
factorfactor1:age_groupchildren 0.457873 0.003837 119.32
factorfactor3:age_groupchildren -0.304688 0.003837 -79.40
characterrobot:factorfactor1:age_groupchildren -0.017203 0.003837 -4.48
characterrobot:factorfactor3:age_groupchildren -0.027872 0.003837 -7.26
Correlation of Fixed Effects:
(Intr) chrctr fctrf1 fctrf3 ag_grp chrc:1 chrc:3 chrc:_ fct1:_ fct3:_ ch:1:_
charactrrbt 0.010
factorfctr1 0.000 0.000
factorfctr3 0.000 0.000 -0.500
ag_grpchldr 0.001 0.030 0.000 0.000
chrctrrbt:1 0.000 0.000 0.013 -0.006 0.000
chrctrrbt:3 0.000 0.000 -0.006 0.013 0.000 -0.500
chrctrrbt:_ 0.030 0.001 0.000 0.000 0.010 0.000 0.000
fctrfctr1:_ 0.000 0.000 -0.002 0.001 0.000 0.033 -0.016 0.000
fctrfctr3:_ 0.000 0.000 0.001 -0.002 0.000 -0.016 0.033 0.000 -0.500
chrctrr:1:_ 0.000 0.000 0.033 -0.016 0.000 -0.002 0.001 0.000 0.013 -0.006
chrctrr:3:_ 0.000 0.000 -0.016 0.033 0.000 0.001 -0.002 0.000 -0.006 0.013 -0.500

Study 3

Studies 3-4

Factor scores by age
Study 1
Joining, by = "subid"

Study 2
Joining, by = "subid"

Studies 1-2
Joining, by = "subid"
Ignoring unknown aesthetics: y

Studies 3-4
Joining, by = c("age_group", "subid", "age", "character")
Column `character` joining factors with different levels, coercing to character vectorJoining, by = "subid"


LS0tCnRpdGxlOiAiRGlta2lkIENvZ1NjaSAyMDE3IChXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCBDb2dTY2kgMjAxNykiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdGhlbWU6IGZsYXRseQogICAgdG9jOiB5ZXMKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwotLS0KCmBgYHtyIGdsb2JhbF9vcHRpb25zLCBpbmNsdWRlID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQpgYGAKCiMgU2V0dXAKCmBgYHtyIHdvcmtzcGFjZSBzZXR1cH0KIyBsb2FkIGxpYnJhcmllcwpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShwc3ljaCkKbGlicmFyeShsYW5nY29nKSAjIHNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2xhbmdjb2cvbGFuZ2NvZwpsaWJyYXJ5KFJDb2xvckJyZXdlcikKbGlicmFyeShwbG90bHkpCmxpYnJhcnkobHVicmlkYXRlKQoKIyBjbGVhciB3b3Jrc3BhY2UKcm0obGlzdCA9IGxzKGFsbCA9IFQpKQpncmFwaGljcy5vZmYoKQpgYGAKCmBgYHtyIGZ1bmN0aW9uc30KIyBtYWtlIG5hLnJtID0gVCB2ZXJzaW9ucyBvZiBzdW1tYXJ5IGZ1bmN0aW9ucwptZWFuX25hIDwtIGZ1bmN0aW9uKHgpIHttZWFuKHgsIG5hLnJtID0gVCl9CmNpX2xvd2VyX25hIDwtIGZ1bmN0aW9uKHgpIHtxdWFudGlsZSh4LCAwLjAyNSwgbmEucm0gPSBUKX0KY2lfdXBwZXJfbmEgPC0gZnVuY3Rpb24oeCkge3F1YW50aWxlKHgsIDAuOTc1LCBuYS5ybSA9IFQpfQoKIyBtYWtlIHJvdW5kaW5nIGZ1bmN0aW9uCnJvdW5kMiA8LSBmdW5jdGlvbih4KSB7Zm9ybWF0KHJvdW5kKHgsIDIpLCBuc21hbGwgPSAyKX0KCiMgbWFrZSBjbGVhbnVwIGZ1bmN0aW9uCmNsZWFudXAgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSwgYWdlX2dyb3VwKSB7CiAgaWYoZ3JlcGwoImFkdWx0IiwgYWdlX2dyb3VwKSkgewogICAgCiAgICAjIHNldCB0YXJnZXQgZGF0YXNldAogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZF9yYXdfc3R1ZHkxfQogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGRfcmF3X3N0dWR5MWJ9CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZF9yYXdfc3R1ZHkxY30KICAgIAogICAgIyBlbmFjdCBleGNsdXNpb25hcnkgY3JpdGVyaWEKICAgIGRfY2xlYW5fMSA8LSBkCiAgICAKICAgICMgcmVjb2RlIGJhY2tncm91bmQgYW5kIGRlbW9ncmFwaGljIHZhcmlhYmxlcwogICAgZF9jbGVhbiA8LSBkX2NsZWFuXzEgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggc3R1ZHkgbnVtYmVyCiAgICAgICAgc3R1ZHkgPSBmYWN0b3Ioc3R1ZHkpKSAlPiUKICAgICAgbXV0YXRlKCAjIGRlYWwgd2l0aCByYWNlCiAgICAgICAgcmFjZV9jYXQyID0gZmFjdG9yKHN1YigiICskIiwgIiIsIGV0aG5pY2l0eSkpLAogICAgICAgIHJhY2VfY2F0MyA9IGZhY3RvcihpZmVsc2UoZ3JlcGwoIiAiLCByYWNlX2NhdDIpID09IFQsICJtdWx0aXJhY2lhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcy5jaGFyYWN0ZXIocmFjZV9jYXQyKSkpKSAlPiUKICAgICAgZHBseXI6OnNlbGVjdChzdHVkeSwgc3ViaWQ6Y291bnRyeV9zZWxmcmVwLCBhZ2VfZ3JvdXAsIHJhY2VfY2F0MykgJT4lCiAgICAgIHJlbmFtZShyYWNlX2NhdCA9IHJhY2VfY2F0MykgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggcmVsaWdpb24gKG5vdGU6IG9ubHkgZGVhbGluZyB3aXRoIGNoaWxkaG9vZCByZWxpZ2lvbiBmb3Igbm93KQogICAgICAgIHJlbGlnaW9uX2NhdDIgPSBmYWN0b3Ioc3ViKCIgKyQiLCAiIiwgcmVsaWdpb25DaGlsZCkpLAogICAgICAgIHJlbGlnaW9uX2NhdDMgPSBmYWN0b3IoaWZlbHNlKGdyZXBsKCIgIiwgcmVsaWdpb25fY2F0MikgPT0gVCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11bHRpcmVsaWdpb3VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcy5jaGFyYWN0ZXIocmVsaWdpb25fY2F0MikpKSkgJT4lCiAgICAgIGRwbHlyOjpzZWxlY3Qoc3R1ZHk6cmFjZV9jYXQsIHJlbGlnaW9uX2NhdDMpICU+JQogICAgICByZW5hbWUocmVsaWdpb25fY2F0ID0gcmVsaWdpb25fY2F0MykKICAgIAogICAgIyByZW1vdmUgZXh0cmFuZW91cyBkZnMgYW5kIHZhcmlhYmxlcwogICAgcm0oZCwgZF9jbGVhbl8xKQogIH0KICAKICBpZihncmVwbCgiY2hpbGQiLCBhZ2VfZ3JvdXApKSB7CiAgICAKICAgICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkX3Jhd19zdHVkeTJ9CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkX3Jhd19zdHVkeTN9CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkX3Jhd19zdHVkeTR9CiAgICAKICAgICMgcmVjb2RlIGJhY2tncm91bmQgYW5kIGRlbW9ncmFwaGljIHZhcmlhYmxlcwogICAgZF9jbGVhbl8yIDwtIGQgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggc3R1ZHkgbnVtYmVyCiAgICAgICAgc3R1ZHkgPSBmYWN0b3Ioc3R1ZHkpLAogICAgICAgIHJlc3BvbnNlTnVtID0gaWZlbHNlKCFpcy5uYShyZXNwb25zZU51bSksIHJlc3BvbnNlTnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShyZXNwb25zZSA9PSAibm8iLCAwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlc3BvbnNlID09ICJraW5kYSIsIDAuNSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocmVzcG9uc2UgPT0gInllcyIsIDEsIE5BKSkpKSkKICAgICMgTk9URTogbmVlZCB0byByZWNvbmNpbGUgcmFjZS9ldGhuaWNpdHkgYXQgc29tZSBwb2ludC4uLgogICAgIyBOT1RFOiBuZWVkIHRvIGRlYWwgd2l0aCBnZW5kZXIgYXQgc29tZSBwb2ludC4uLgogIAogICAgZF9jbGVhbiA8LSBkX2NsZWFuXzIKICAgIAogICAgIyByZW1vdmUgZXh0cmFuZW91cyBkZnMgYW5kIHZhcmlhYmxlcwogICAgcm0oZCwgZF9jbGVhbl8yKQogIH0KICAKICAjIHJlbW92ZSBvdXRsaWVycyBpZiBkZXNpcmVkCiAgaWYoY2hvc2VuT3V0bGllckhhbmRsaW5nID09ICJyZW1vdmUiKSB7CiAgICAKICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUKICAgICAgZ2F0aGVyKGNhcGFjaXR5LCBzY29yZSwgaGFwcHk6cHJpZGUpICU+JQogICAgICBncm91cF9ieShjaGFyYWN0ZXIsIGNhcGFjaXR5KSAlPiUKICAgICAgZmlsdGVyKCFzY29yZSAlaW4lIGJveHBsb3Quc3RhdHMoc2NvcmUsIDIuNSkkb3V0KSAlPiUKICAgICAgc3ByZWFkKGNhcGFjaXR5LCBzY29yZSkgJT4lCiAgICAgIGFycmFuZ2UoY2hhcmFjdGVyLCBzdWJpZCkKICAgIAogIH0KICAKICAjIGZpbHRlciBjaGFyYWN0ZXJzIGlmIGRlc2lyZWQKICBpZihpcy5lbGVtZW50KCJub25lIiwgY2hvc2VuRXhjbHVkZSkpIHt9IGVsc2UgewogICAgCiAgICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICAgIGZpbHRlcighY2hhcmFjdGVyICVpbiUgY2hvc2VuRXhjbHVkZSkKICAgIAogICAgfQogICAgCiAgIyBmaWx0ZXIgaXRlbXMgaWYgZGVzaXJlZAogIGlmKGlzLmVsZW1lbnQoIm5vbmUiLCBjaG9zZW5FeGNsdWRlSXRlbSkpIHt9IGVsc2UgewogICAgZF9jbGVhbiA8LSBkX2NsZWFuICU+JQogICAgICBkcGx5cjo6ZmlsdGVyKCFjYXBhY2l0eSAlaW4lIGNob3NlbkV4Y2x1ZGVJdGVtKQogIH0KICAKICAjIGRyb3AgdHJpYWxzIDwyNTAgbXMKICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICBmaWx0ZXIocnQgPj0gMjUwIHwgaXMubmEocnQpKQogIAogICMgY2VudGVyIHJlc3BvbnNlIHZhcmlhYmxlCiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKSB7CiAgICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICAgIG11dGF0ZShyZXNwb25zZU51bUMgPSByZXNwb25zZU51bSAtIDQpCiAgfSBlbHNlIHsKICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUKICAgICAgbXV0YXRlKHJlc3BvbnNlTnVtQyA9IHJlc3BvbnNlTnVtIC0gMC41KQogIH0KCiAgICAjIHJlbmFtZSBjaGFyYWN0ZXIgbmFtZSB2YXJpYWJsZXMKICBpZigiY2hhck5hbWUiICVpbiUgbmFtZXMoZF9jbGVhbikpIHsKICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUgcmVuYW1lKGNoYXJhY3RlciA9IGNoYXJOYW1lKQogIH0KICAKICAjIGNsZWFudXAKICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICBmaWx0ZXIoIWlzLm5hKHN1YmlkKSwgIWlzLm5hKGNoYXJhY3RlciksICFpcy5uYShjYXBhY2l0eSkpCiAgCiAgIyByZXR1cm4gY2xlYW5lZCBkYXRhc2V0CiAgcmV0dXJuKGRfY2xlYW4pCn0KCiMgbWFrZSBmdW5jdGlvbiBmb3Igc3RyaXBwaW5nIGRhdGFmcmFtZXMgZm9yIGRpbWVuc2lvbiByZWR1Y2F0aW9uCm1ha2VEUkRGIDwtIGZ1bmN0aW9uKGRhdGFzb3VyY2UsIGNob3NlbkNvbmRpdGlvbikgewogIAogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGQxYn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZDFjfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQoKICAjIGZpbHRlciBieSBjaGFyYWN0ZXIgaWYgc3BlY2lmaWVkCiAgaWYoY2hvc2VuQ29uZGl0aW9uICVpbiUgYygiYmVldGxlIiwgInJvYm90IikpIHsKICAgIGQgPC0gZCAlPiUgZmlsdGVyKGNoYXJhY3RlciA9PSBjaG9zZW5Db25kaXRpb24pCiAgfQoKICAjIG1ha2Ugc3RyaXBwZWQgZGF0YWZyYW1lIGZvciBkaW1lbnNpb24gcmVkdWNhdGlvbiBhbmFseXNlcwogIGRfc3RyaXAgPC0gZCAlPiUKICAgIGZpbHRlcighaXMubmEoY2hhcmFjdGVyKSwgIWlzLm5hKHN1YmlkKSwgIWlzLm5hKGNhcGFjaXR5KSwgY2FwYWNpdHkgIT0gIiIpICU+JQogICAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgICBzZWxlY3Qoc3ViaWQsIGNhcGFjaXR5LCByZXNwb25zZU51bSkgJT4lCiAgICBzcHJlYWQoY2FwYWNpdHksIHJlc3BvbnNlTnVtKSAlPiUKICAgIHJlbW92ZV9yb3duYW1lcygpICU+JQogICAgY29sdW1uX3RvX3Jvd25hbWVzKHZhciA9ICJzdWJpZCIpCgogICMgcmV0dXJuIHN0cmlwcGVkIGRhdGFmcmFtZQogIHJldHVybihkX3N0cmlwKQp9CgojIG1ha2UgZGVtb2dyYXBoaWNzIGZ1bmN0aW9ucwpkZW1vU2FtcGxlU2l6ZSA8LSBmdW5jdGlvbihkYXRhc291cmNlKSB7CgogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGQxYn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZDFjfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQoKICAjIGdldCBkaXN0aW5jdCBzdWJpZHMKICBzYW1wbGVfc2l6ZSA8LSBkICU+JSBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyKSAlPiUgY291bnQoY2hhcmFjdGVyKSAlPiUgZGF0YS5mcmFtZSgpCgogICMgYWRkIHRvdGFsIHNhbXBsZSBzaXplICAKICBzYW1wbGVfc2l6ZSA8LSByYmluZChzYW1wbGVfc2l6ZSAlPiUgbXV0YXRlKGNoYXJhY3RlciA9IGFzLmNoYXJhY3RlcihjaGFyYWN0ZXIpKSwKICAgICAgICAgICAgICAgICAgICAgICBjKGNoYXJhY3RlciA9ICJhbGwiLCBuID0gZCAlPiUgZGlzdGluY3Qoc3ViaWQpICU+JSBjb3VudCgpICU+JSBhcy5udW1lcmljKCkpKQogIAogICMgcmV0dXJuIGRhdGFmcmFtZQogIHJldHVybihzYW1wbGVfc2l6ZSkKfQpkZW1vRHVyYXRpb24gPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgc2FtcGxlIHNpemUgcGVyIGNoYXJhY3RlcgogIGR1cmF0aW9uIDwtIGQgJT4lCiAgICBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBkdXJhdGlvbikgJT4lCiAgICBtdXRhdGUoZHVyYXRpb24gPSBhcy5udW1lcmljKGR1cmF0aW9uKSkgJT4lCiAgICBncm91cF9ieShjaGFyYWN0ZXIpICU+JQogICAgc3VtbWFyaXNlKG1pbl9kdXJhdGlvbiA9IG1pbihkdXJhdGlvbiwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtYXhfZHVyYXRpb24gPSBtYXgoZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVkaWFuX2R1cmF0aW9uID0gbWVkaWFuKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIG1lYW5fZHVyYXRpb24gPSBtZWFuKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNkX2R1cmF0aW9uID0gc2QoZHVyYXRpb24sIG5hLnJtID0gVCkpCgogICMgYWRkIHRvdGFsIGR1cmF0aW9uCiAgYWxsIDwtIGQgJT4lCiAgICBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBkdXJhdGlvbikgJT4lCiAgICBtdXRhdGUoZHVyYXRpb24gPSBhcy5udW1lcmljKGR1cmF0aW9uKSkgJT4lCiAgICBzdW1tYXJpc2UobWluX2R1cmF0aW9uID0gbWluKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIG1heF9kdXJhdGlvbiA9IG1heChkdXJhdGlvbiwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtZWRpYW5fZHVyYXRpb24gPSBtZWRpYW4oZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVhbl9kdXJhdGlvbiA9IG1lYW4oZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgc2RfZHVyYXRpb24gPSBzZChkdXJhdGlvbiwgbmEucm0gPSBUKSkgJT4lCiAgICBtdXRhdGUoY2hhcmFjdGVyID0gImFsbCIpCiAgCiAgZHVyYXRpb24gPC0gcmJpbmQoZHVyYXRpb24sIGFsbCkgIyBub3Qgc3VyZSB3aHkgZnVsbF9qb2luIGRvZXNuJ3Qgd29yayAgICAKCiAgIyByZXR1cm4gZGF0YWZyYW1lCiAgcmV0dXJuKGR1cmF0aW9uKQp9CmRlbW9BZ2UgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgc2FtcGxlIHNpemUgcGVyIGNoYXJhY3RlcgogIGFnZSA8LSBkICU+JQogICAgZGlzdGluY3Qoc3ViaWQsIGNoYXJhY3RlciwgYWdlKSAlPiUKICAgIG11dGF0ZShhZ2UgPSBhcy5udW1lcmljKGFnZSkpICU+JQogICAgZ3JvdXBfYnkoY2hhcmFjdGVyKSAlPiUKICAgIHN1bW1hcmlzZShtaW5fYWdlID0gbWluKGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtYXhfYWdlID0gbWF4KGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtZWRpYW5fYWdlID0gbWVkaWFuKGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtZWFuX2FnZSA9IG1lYW4oYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNkX2FnZSA9IHNkKGFnZSwgbmEucm0gPSBUKSkKCiAgIyBhZGQgdG90YWwgYWdlCiAgYWxsIDwtIGQgJT4lCiAgICBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBhZ2UpICU+JQogICAgbXV0YXRlKGFnZSA9IGFzLm51bWVyaWMoYWdlKSkgJT4lCiAgICBzdW1tYXJpc2UobWluX2FnZSA9IG1pbihhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWF4X2FnZSA9IG1heChhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVkaWFuX2FnZSA9IG1lZGlhbihhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVhbl9hZ2UgPSBtZWFuKGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBzZF9hZ2UgPSBzZChhZ2UsIG5hLnJtID0gVCkpICU+JQogICAgbXV0YXRlKGNoYXJhY3RlciA9ICJhbGwiKQogIGFnZSA8LSBmdWxsX2pvaW4oYWdlLCBhbGwpCgogICMgcmV0dXJuIGRhdGFmcmFtZQogIHJldHVybihhZ2UpCn0KZGVtb0dlbmRlciA8LSBmdW5jdGlvbihkYXRhc291cmNlKSB7CgogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGQxYn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZDFjfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQoKICAjIGdldCBnZW5kZXIgcGVyIGNoYXJhY3RlciBhbmQgb3ZlcmFsbAogIGdlbmRlciA8LSBkYXRhLmZyYW1lKGFkZG1hcmdpbnMod2l0aChkICU+JSBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBnZW5kZXIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUoY2hhcmFjdGVyLCBnZW5kZXIpKSkpICU+JQogICAgZmlsdGVyKGdlbmRlciAhPSAiU3VtIikgJT4lCiAgICByZW5hbWUobiA9IEZyZXEpCiAgCiAgZ2VuZGVyIDwtIGdlbmRlciAlPiUKICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoaWZlbHNlKGNoYXJhY3RlciA9PSAiU3VtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbGwiLCBhcy5jaGFyYWN0ZXIoY2hhcmFjdGVyKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImJlZXRsZSIsICJyb2JvdCIsICJhbGwiKSkpICU+JQogICAgYXJyYW5nZShjaGFyYWN0ZXIsIGdlbmRlcikgJT4lCiAgICBzcHJlYWQoZ2VuZGVyLCBuKQogIAogICMgcmV0dXJuIGRhdGFmcmFtZQogIHJldHVybihnZW5kZXIpCn0KZGVtb1JhY2UgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgcmFjZSBwZXIgY2hhcmFjdGVyIGFuZCBvdmVyYWxsCiAgcmFjZSA8LSBkYXRhLmZyYW1lKGFkZG1hcmdpbnMod2l0aChkICU+JSBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCByYWNlX2NhdCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUoY2hhcmFjdGVyLCByYWNlX2NhdCkpKSkgJT4lCiAgICBmaWx0ZXIocmFjZV9jYXQgIT0gIlN1bSIpICU+JQogICAgcmVuYW1lKG4gPSBGcmVxKQoKICAgIHJhY2UgPC0gcmFjZSAlPiUKICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihpZmVsc2UoY2hhcmFjdGVyID09ICJTdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxsIiwgYXMuY2hhcmFjdGVyKGNoYXJhY3RlcikpKSkgJT4lCiAgICAgIGFycmFuZ2UoY2hhcmFjdGVyLCByYWNlX2NhdCkgJT4lCiAgICAgIHNwcmVhZChyYWNlX2NhdCwgbikKICAKICAjIHJldHVybiBkYXRhZnJhbWUKICByZXR1cm4ocmFjZSkKfQoKIyBwbG90dGluZyBmdW5jdGlvbnMKbWFrZUZhY2V0TGFicyA8LSBmdW5jdGlvbihkZl9wbG90dGluZykgewogIGZhY2V0X2xhYmVscyA8LSBhcnJheSgpCiAgZGZfcGxvdHRpbmcgPC0gZGZfcGxvdHRpbmcgJT4lIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkKICBmb3IoaSBpbiAxOmxlbmd0aChsZXZlbHMoZGZfcGxvdHRpbmckY2hhcmFjdGVyKSkpIHsKICAgIGRmIDwtIGRmX3Bsb3R0aW5nICU+JSBmaWx0ZXIoY2hhcmFjdGVyID09IGxldmVscyhkZl9wbG90dGluZyRjaGFyYWN0ZXIpW2ldKSAlPiUKICAgICAgc2VsZWN0KGNoYXJhY3RlciwgbikgJT4lIHVuaXF1ZSgpCiAgICBmYWNldF9sYWJlbHNbaV0gPC0gcGFzdGUwKGRmJGNoYXJhY3RlciwgIiAobiA9ICIsIGRmJG4sICIpIikKICB9CiAgbmFtZXMoZmFjZXRfbGFiZWxzKSA8LSBsZXZlbHMoZGZfcGxvdHRpbmckY2hhcmFjdGVyKQogIHJldHVybihmYWNldF9sYWJlbHMpCn0KYGBgCgpgYGB7ciBtb2RlbGluZyBkZWNpc2lvbnN9CiMgcmVtb3ZlIG91dGxpZXJzPwpjaG9zZW5PdXRsaWVySGFuZGxpbmcgPC0gImtlZXAiCiMgY2hvc2VuT3V0bGllckhhbmRsaW5nIDwtICJyZW1vdmUiCgojIGV4Y2x1ZGUgYW55IGNvbmRpdGlvbnMgKGNoYXJhY3RlcnMpPwpjaG9zZW5FeGNsdWRlIDwtICJub25lIgojIGNob3NlbkV4Y2x1ZGUgPC0gYygic3RhcGxlciIsICJjYXIiLCAiY29tcHV0ZXIiKQoKIyBleGNsdWRlIGFueSBpdGVtcyAobWVudGFsIGNhcGFjaXRpZXMpPwojIGNob3NlbkV4Y2x1ZGVJdGVtIDwtICJub25lIgojIGNob3NlbkV4Y2x1ZGVJdGVtIDwtICJjb21wdXRhdGlvbnMiCmNob3NlbkV4Y2x1ZGVJdGVtIDwtIGMoIm1ldGFsIiwgIm9uX29mZiIpCgojIE5PVEU6IGFsd2F5cyBjaG9vc2UgbWluaW1hbCByZXNpZHVhbCAoZm0gPSAibWlucmVzIikgaW5zdGVhZCBvZiBNTCBiZWNhdXNlIG9mIG5vbi1ub3JtYWxpdHkKCiMgZm9yIEVGQXMsIHdoYXQga2luZCBvZiBjb3JyZWxhdGlvbj8KY2hvc2VuQ29yVHlwZSA8LSAiY29yIiAjIHBlYXJzb24gY29ycmVsYXRpb24KIyBjaG9zZW5Db3JUeXBlIDwtICJwb2x5IiAjIHBvbHljaG9yaWMgY29ycmVsYXRpb24KCiMgZm9yIEVGQXMsIHdoYXQga2luZCBvZiByb3RhdGlvbj8KY2hvc2VuUm90VHlwZSA8LSAidmFyaW1heCIgIyB2YXJpbWF4IHJvdGF0aW9uCiMgY2hvc2VuUm90VHlwZSA8LSAib2JsaW1pbiIgIyBvYmxpbWluIHJvdGF0aW9uCiMgY2hvc2VuUm90VHlwZSA8LSAibm9uZSIgIyBubyByb3RhdGlvbgoKZGF0YS5mcmFtZSgiY29uZGl0aW9uc0V4Y2x1ZGVkIiA9IGNob3NlbkV4Y2x1ZGUsCiAgICAgICAgICAgIm91dGxpZXJIYW5kbGluZyIgPSBjaG9zZW5PdXRsaWVySGFuZGxpbmcsCiAgICAgICAgICAgIkVGQV9jb3JyZWxhdGlvbiIgPSBjaG9zZW5Db3JUeXBlLAogICAgICAgICAgICJFRkFfcm90YXRpb24iID0gY2hvc2VuUm90VHlwZSkKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyBEYXRhIHByZXBhcmF0aW9uCgpgYGB7ciBkYXRhIHVwbG9hZH0KIyBzdHVkeSAxICgyMDE2LTA3LTA2LCBhZHVsdHMsIDIgY29uZGl0aW9ucywgMy1wb2ludCBzY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTEgPC0gcmVhZC5jc3YoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWQvZGlta2lkL2RhdGEvYWR1bHRzL3VzX3J1bi0wMV8yMDE2LTA2LTA1X2Fub255bWl6ZWQuY3N2IikgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDEiLCBhZ2VfZ3JvdXAgPSAiYWR1bHRzIikgJT4lIHNlbGVjdCgtWCkKCiMgc3R1ZHkgMWIgKDIwMTctMDctMTksIGFkdWx0cywgMiBjb25kaXRpb25zLCA3LXBvaW50IHNjYWxlLCAiZGVjaWRlIHdoYXQgdG8gZG8iIGFuZCAibWFrZSBwbGFucyIpCmRfcmF3X3N0dWR5MWIgPC0gcmVhZC5jc3YoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWQvZGlta2lkL2RhdGEvYWR1bHRzL3VzX3J1bi0wMl8yMDE2LTA3LTE5X2Fub255bWl6ZWQuY3N2IikgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDFiIiwgYWdlX2dyb3VwID0gImFkdWx0cyIpICU+JSBzZWxlY3QoLVgpCgojIHN0dWR5IDFjICgyMDE2LTEyLTA4LCBhZHVsdHMsIDIgY29uZGl0aW9ucywgMy1wb2ludCBzY2FsZSwgImhhdmUgZnJlZSB3aWxsIiBhbmQgImhhdmUgaW50ZW50aW9ucyIpCmRfcmF3X3N0dWR5MWMgPC0gcmVhZC5jc3YoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWQvZGlta2lkL2RhdGEvYWR1bHRzL3VzX3J1bi0wM18yMDE2LTEyLTA4X2Fub255bWl6ZWQuY3N2IikgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDFjIiwgYWdlX2dyb3VwID0gImFkdWx0cyIpICU+JSBzZWxlY3QoLVgpCgojIHN0dWR5IDIgKEp1bmUgLSBEZWNlbWJlciAyMDE2LCA3LTl5bywgMiBjb25kaXRpb25zLCAzLXBvaW50LXNjYWxlLCAiZGVjaWRlIHdoYXQgdG8gZG8iIGFuZCAibWFrZSBwbGFucyIpCmRfcmF3X3N0dWR5MiA8LSByZWFkLmNzdigiL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL0RpbWtpZC9kaW1raWQvZGF0YS9jaGlsZHJlbi9ydW4tMDFfMjAxNy0wNy0yNF9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAyIiwgYWdlX2dyb3VwID0gImNoaWxkcmVuXzc5IikgJT4lIHNlbGVjdCgtWCkKCiMgc3R1ZHkgMyAoSmFudWFyeSAtIEp1bmUgMjAxNywgNy05eW8sIDkgY29uZGl0aW9ucywgMy1wb2ludC1zY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTMgPC0gcmVhZC5jc3YoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWQvZGlta2lkL2RhdGEvY2hpbGRyZW4vcnVuLTAyXzIwMTctMDgtMDhfYW5vbnltaXplZC5jc3YiKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgMyIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbl83OSIpICU+JSBzZWxlY3QoLVgpICU+JQogIG11dGF0ZShkb2IgPSBwYXJzZV9kYXRldGltZShkYXRlT2ZCaXJ0aCwgIiVtLyVkLyV5IiksCiAgICAgICAgIGRvdCA9IHBhcnNlX2RhdGV0aW1lKGdzdWIoIjIwMTciLCAiMTciLCBkYXRlT2ZUZXN0KSwgIiVtLyVkLyV5IiksIAogICAgICAgICBhZ2UgPSBpbnRlcnZhbChzdGFydCA9IGRvYiwgZW5kID0gZG90KSAvIGR1cmF0aW9uKG51bSA9IDEsIHVuaXRzID0gInllYXJzIikpICU+JQogIHNlbGVjdCgtZGF0ZU9mQmlydGgsIC1kYXRlT2ZUZXN0LCAtZG9iLCAtZG90KQoKIyBzdHVkeSA0IChNYXJ5IDIwMTcgLSBwcmVzZW50LCA0LTZ5bywgOSBjb25kaXRpb25zLCAzLXBvaW50LXNjYWxlLCAiZGVjaWRlIHdoYXQgdG8gZG8iIGFuZCAibWFrZSBwbGFucyIpCmRfcmF3X3N0dWR5NCA8LSByZWFkLmNzdigiL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL0RpbWtpZC9kaW1raWQvZGF0YS9jaGlsZHJlbi9ydW4tMDNfMjAxNy0wOC0yMV9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSA0IiwgYWdlX2dyb3VwID0gImNoaWxkcmVuXzQ2IikgJT4lIHNlbGVjdCgtWCkgJT4lCiAgbXV0YXRlKGRvYiA9IHBhcnNlX2RhdGV0aW1lKGRhdGVPZkJpcnRoLCAiJW0vJWQvJXkiKSwKICAgICAgICAgZG90ID0gcGFyc2VfZGF0ZXRpbWUoZ3N1YigiMjAxNyIsICIxNyIsIGRhdGVPZlRlc3QpLCAiJW0vJWQvJXkiKSwgCiAgICAgICAgIGFnZSA9IGludGVydmFsKHN0YXJ0ID0gZG9iLCBlbmQgPSBkb3QpIC8gZHVyYXRpb24obnVtID0gMSwgdW5pdHMgPSAieWVhcnMiKSkgJT4lCiAgc2VsZWN0KC1kYXRlT2ZCaXJ0aCwgLWRhdGVPZlRlc3QsIC1kb2IsIC1kb3QpCmBgYAoKYGBge3IgZGF0YSBjbGVhbnVwfQojIGNsZWFuIHVwIGRhdGFzZXRzCmQxIDwtIGNsZWFudXAoInN0dWR5IDEiLCAiYWR1bHRzIikKZDFiIDwtIGNsZWFudXAoInN0dWR5IDEiLCAiYWR1bHRzIikKZDFjIDwtIGNsZWFudXAoInN0dWR5IDEiLCAiYWR1bHRzIikKZDIgPC0gY2xlYW51cCgic3R1ZHkgMiIsICJjaGlsZHJlbiIpCmQzIDwtIGNsZWFudXAoInN0dWR5IDMiLCAiY2hpbGRyZW4iKQpkNCA8LSBjbGVhbnVwKCJzdHVkeSA0IiwgImNoaWxkcmVuIikKCiMgdHdlYWsgYnkgaGFuZApkMiA8LSBkMiAlPiUKICBmaWx0ZXIoIWlzLm5hKGFnZSkpICU+JQogIGZpbHRlcihhZ2UgPj0gNywgYWdlIDwgMTApICU+JQogIGZpbHRlcihjaGFyYWN0ZXIgIT0gImVsZXBoYW50IikKCmQzIDwtIGQzICU+JQogIGZpbHRlcighaXMubmEoY2hhcmFjdGVyKSwgY2hhcmFjdGVyICE9ICIiKQoKZDQgPC0gZDQgJT4lCiAgZmlsdGVyKCFpcy5uYShjaGFyYWN0ZXIpLCBjaGFyYWN0ZXIgIT0gIiIpICU+JQogIGZpbHRlcihhZ2UgPj0gNCwgYWdlIDwgNykgJT4lCiAgbXV0YXRlKGV0aG5pY2l0eSA9IGdzdWIoIiBTTiIsICIiLCBldGhuaWNpdHkpKSAlPiUKICBtdXRhdGUocmFjZV9jYXQgPSBpZmVsc2UoZ3JlcGwoImJpbmciLCB0b2xvd2VyKHRlc3RpbmdTaXRlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShldGhuaWNpdHkgPT0gIkEiLCAiZWFzdF9hc2lhbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZXRobmljaXR5ID09ICJDIiB8IGV0aG5pY2l0eSA9PSAiQ2oiLCAid2hpdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShldGhuaWNpdHkgPT0gIkkiLCAic291dGhfYXNpYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZXRobmljaXR5ID09ICJNRSIsICJtaWRkbGVfZWFzdGVybiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZXRobmljaXR5ID09ICJBZiIsICJibGFjayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGV0aG5pY2l0eSA9PSAiSCIsICJoaXNwYW5pYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiICIsIGV0aG5pY2l0eSkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVwbCgiLyIsIGV0aG5pY2l0eSksICJtdWx0aXJhY2lhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZSh0b2xvd2VyKGV0aG5pY2l0eSkgPT0gImJsYWNrIG9yIGFmcmljYW4gYW1lcmljYW4iLCAiYmxhY2siLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHRvbG93ZXIoZXRobmljaXR5KSA9PSAiaGlzcGFuaWMgb3IgbGF0aW5vL2EiLCAiaGlzcGFuaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZSh0b2xvd2VyKGV0aG5pY2l0eSkgPT0gImVhc3QgYXNpYW4iLCAiZWFzdF9hc2lhbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZSh0b2xvd2VyKGV0aG5pY2l0eSkgPT0gIm5hdGl2ZSBhbWVyaWNhbiwgYW1lcmljYW4gaW5kaWFuLCBvciBhbGFza2EgbmF0aXZlIiwgIm5hdGl2ZV9hbWVyaWNhbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UodG9sb3dlcihldGhuaWNpdHkpID09ICJ3aGl0ZSIgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9sb3dlcihldGhuaWNpdHkpID09ICJ3aGl0ZSwgY2F1Y2FzaWFuLCBvciBldXJvcGVhbiBhbWVyaWNhbiIsICJ3aGl0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHRvbG93ZXIoZXRobmljaXR5KSA9PSAic291dGggb3Igc291dGhlYXN0IGFzaWFuIiB8IHRvbG93ZXIoZXRobmljaXR5KSA9PSAic291dGggYXNpYW4iLCAic291dGhfYXNpYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UodG9sb3dlcihldGhuaWNpdHkpID09ICIiIHwgaXMubmEoZXRobmljaXR5KSwgTkEsICJtdWx0aXJhY2lhbCIpKSkpKSkpKSkKYGBgCgpgYGB7ciBkYXRhZnJhbWVzIGZvciBkaW1lbnNpb24gcmVkdWNhdGlvbn0KIyBtYWtlIGRhdGFmcmFtZXMgZm9yIHMxCiMgZDFfYmVldGxlIDwtIG1ha2VEUkRGKCJzdHVkeSAxIiwgImJlZXRsZSIpCiMgZDFfcm9ib3QgPC0gbWFrZURSREYoInN0dWR5IDEiLCAicm9ib3QiKQpkMV9hbGwgPC0gbWFrZURSREYoInN0dWR5IDEiLCAiYWxsIikKCiMgbWFrZSBkYXRhZnJhbWVzIGZvciBmb2xsb3ctdXAgc3R1ZGllcyB0byBzMQpkMWJfYWxsIDwtIG1ha2VEUkRGKCJzdHVkeSAxYiIsICJhbGwiKQpkMWNfYWxsIDwtIG1ha2VEUkRGKCJzdHVkeSAxYyIsICJhbGwiKQoKIyBtYWtlIGRhdGFmcmFtZXMgZm9yIHN0dWR5IDIKIyBkMl9iZWV0bGUgPC0gbWFrZURSREYoInN0dWR5IDIiLCAiYmVldGxlIikKIyBkMl9yb2JvdCA8LSBtYWtlRFJERigic3R1ZHkgMiIsICJyb2JvdCIpCmQyX2FsbCA8LSBtYWtlRFJERigic3R1ZHkgMiIsICJhbGwiKQoKIyBtYWtlIGRhdGFmcmFtZXMgZm9yIHN0dWR5IDMKIyBkM19iZWV0bGUgPC0gbWFrZURSREYoInN0dWR5IDMiLCAiYmVldGxlIikKIyBkM19yb2JvdCA8LSBtYWtlRFJERigic3R1ZHkgMyIsICJyb2JvdCIpCmQzX2FsbCA8LSBtYWtlRFJERigic3R1ZHkgMyIsICJhbGwiKQoKIyBtYWtlIGRhdGFmcmFtZXMgZm9yIHN0dWR5IDQKZDRfYWxsIDwtIG1ha2VEUkRGKCJzdHVkeSA0IiwgImFsbCIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMgQW5hbHlzaXMgcGxhbgoKRm9yIGFsbCBzdHVkaWVzIHdlIGNvbmR1Y3QgZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2VzIHVzaW5nIFBlYXJzb24gY29ycmVsYXRpb25zIHRvIGZpbmQgbWluaW11bSByZXNpZHVhbCBzb2x1dGlvbnMuIAoKRm9yIGVhY2ggc3R1ZHksIHdlIGZpcnN0IGV4YW1pbmUgbWF4aW1hbCB1bnJvdGF0ZWQgYW5kIHJvdGF0ZWQgc29sdXRpb25zLiBUbyBkZXRlcm1pbmUgdGhlIG1heGltdW0gbnVtYmVyIG9mIGZhY3RvcnMgdG8gZXh0cmFjdCwgd2UgdXNlIHRoZSBmb2xsb3dpbmcgcnVsZSBvZiB0aHVtYjogV2l0aCAkcCQgb2JzZXJ2YXRpb25zIHBlciBwYXJ0aWNpcGFudCwgd2UgY2FuIGV4dHJhY3QgYSBtYXhpbXVtIG9mICRrJCBmYWN0b3JzLCB3aGVyZSAkKHAtaykqMiA+IHArayQsIGkuZS4sICRrIDwgcC8zJC4gVGh1cywgd2l0aCA0MCBtZW50YWwgY2FwYWNpdHkgaXRlbXMsIHdlIGNhbiBleHRyYWN0IGEgbWF4aW11bSBvZiAxMyBmYWN0b3JzLgoKVG8gZGV0ZXJtaW5lIGhvdyBtYW55IGZhY3RvcnMgdG8gcmV0YWluLCB3ZSB1c2UgdGhlIGZvbGxvd2luZyBwcmVzZXQgcmV0ZW50aW9uIGNyaXRlcmlhLCBjb25zaWRlcmluZyB0aGUgdW5yb3RhdGVkIG1heGltYWwgc29sdXRpb24gKHVubGVzcyBvdGhlcndpc2Ugbm90ZWQpOgoKICAtIEVhY2ggZmFjdG9yIG11c3QgaGF2ZSBhbiBlaWdlbnZhbHVlID4xLjAuCiAgLSBFYWNoIGZhY3RvciBtdXN0IGluZGl2aWR1YWxseSBhY2NvdW50IGZvciA+NSUgb2YgdGhlIHRvdGFsIHZhcmlhbmNlIGluIHRoZSBtYXhpbWFsIG1vZGVsLgogIC0gQWZ0ZXIgcm90YXRpb24sIGVhY2ggZmFjdG9yIG11c3QgYmUgdGhlIGRvbWluYW50IGZhY3RvciAoaS5lLiwgdGhlIGZhY3RvciB3aXRoIHRoZSBoaWdoZXN0IGZhY3RvciBsb2FkaW5nKSBmb3Ig4omlMSBtZW50YWwgY2FwYWNpdHkgaXRlbS4KCldlIHRoZW4gZXhhbWluZSBhbmQgaW50ZXJwcmV0IHZhcmltYXgtcm90YXRlZCBzb2x1dGlvbnMsIGV4dHJhY3Rpbmcgb25seSB0aGUgbnVtYmVyIG9mIGZhY3RvcnMgdGhhdCBtZWV0IHRoZXNlIGNyaXRlcmlhLgoKIyBTdHVkeSAxCgpTdHVkeSBpbmZvcm1hdGlvbjoKCiogRGVzaWduOiAyIGNvbmRpdGlvbnMgKGJlZXRsZSwgcm9ib3QpLCAzLXBvaW50IHJlc3BvbnNlIHNjYWxlLCAiZGVjaWRlIHdoYXQgdG8gZG8iIGFuZCAiaGF2ZSBpbnRlbnRpb25zIgoqIFBvcHVsYXRpb246IGFkdWx0cwoqIERhdGUgY29uZHVjdGVkOiAyMDE2LTA3LTA2IChNVHVyaykKCiMjIERlbW9ncmFwaGljcwoKYGBge3IgczEgZGVtb2dyYXBoaWNzfQojIG1ha2UgZGVtb2dyYXBoaWNzIHRhYmxlcwpkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgMSIpCmRlbW9EdXJhdGlvbigic3R1ZHkgMSIpCmRlbW9BZ2UoInN0dWR5IDEiKQpkZW1vR2VuZGVyKCJzdHVkeSAxIikKZGVtb1JhY2UoInN0dWR5IDEiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyBFeHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMKCiMjIyBTdGVwIDE6IFJ1biBtYXhpbWFsIEVGQSAod2l0aG91dCBhbmQgd2l0aCByb3RhdGlvbikKCmBgYHtyIHMxIGFsbCBubyByb3RhdGlvbn0KIyBleGFtaW5lIHNjcmVlIHBsb3QKZmEucGFyYWxsZWwoZDFfYWxsKQoKIyBydW4gRUZBIHdpdGhvdXQgcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QxX2FsbF91bnJvdGF0ZWQgPC0gZmEoZDFfYWxsLCAxMywgcm90YXRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDFfYWxsX3Vucm90YXRlZCkKCiMgZXhhbWluZSBlaWdlbnZhbHVlcyBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkCmVmYV9kMV9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzIDwtIHByaW50KGVmYV9kMV9hbGxfdW5yb3RhdGVkKSRWYWNjb3VudGVkICU+JQogIHQoKSAlPiUKICBkYXRhLmZyYW1lKCkKCiMgY291bnQgZmFjdG9ycyB3aXRoIGVpZ2VudmFsdWVzID4gMSBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkID4gNSUKZWZhX2QxX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMgPC0gZWZhX2QxX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgJT4lCiAgZmlsdGVyKFNTLmxvYWRpbmdzID4gMSwgUHJvcG9ydGlvbi5FeHBsYWluZWQgPiAwLjA1KSAlPiUKICBjb3VudCgpICU+JQogIGFzLm51bWVyaWMoKQplZmFfZDFfYWxsX3Vucm90YXRlZF9uZmFjdG9ycwpgYGAKCmBgYHtyIHMxIGFsbCByb3RhdGlvbn0KZWZhX2QxX2FsbF9yb3RhdGVkX21heCA8LSBmYShkMV9hbGwsIDEzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKZWZhX2QxX2FsbF9yb3RhdGVkIDwtIGZhKGQxX2FsbCwgZWZhX2QxX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgojIGNoZWNrIHRoYXQgZWFjaCBvZiB0aGVzZSBmYWN0b3JzIGlzIHRoZSBkb21pbmFudCBmYWN0b3IgZm9yIGF0IGxlYXN0IG9uZSBtZW50YWwgY2FwYWNpdHkgaXRlbQplZmFfZDFfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgPC0gZmEuc29ydChsb2FkaW5ncyhlZmFfZDFfYWxsX3JvdGF0ZWQpW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUobG9hZGluZ19hYnMgPSBhYnMobG9hZGluZykpICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBsb2FkaW5nX2FicykgJT4lCiAgdW5ncm91cCgpCmVmYV9kMV9hbGxfcm90YXRlZF9sb2FkaW5ncwoKIyBkcm9wIGFueSBmYWN0b3JzIHdoZXJlIG4gPCAxCmVmYV9kMV9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKQoKIyBzZXQgbnVtYmVyIG9mIGZhY3RvcnMgdG8gZXh0cmFjdApuZmFjdG9yc19kMV9hbGwgPC0gZWZhX2QxX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApICU+JQogIG5yb3coKQpuZmFjdG9yc19kMV9hbGwKYGBgCgojIyMgU3RlcCAyOiBSdW4gRUZBIHdpdGggdmFyaW1heCByb3RhdGlvbgoKYGBge3IgczEgYWxsIHZhcmltYXggcm90YXRpb259CiMgcnVuIEVGQSB3aXRoIHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMV9hbGxfcm90YXRlZE4gPC0gZmEoZDFfYWxsLCBuZmFjdG9yc19kMV9hbGwsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kMV9hbGxfcm90YXRlZE4pCgojIGdldCBsb2FkaW5ncyBmb3IgZWFjaCBmYWN0b3IKZWZhX2QxX2FsbF9yb3RhdGVkTl9sb2FkaW5ncyA8LSBsb2FkaW5ncyhlZmFfZDFfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIyMgRmFjdG9yIGxvYWRpbmdzIHRhYmxlCgpgYGB7ciBzMSBsb2FkaW5ncyB0YWJsZX0KZGF0YS5mcmFtZShsb2FkaW5ncyhmYS5zb3J0KGVmYV9kMV9hbGxfcm90YXRlZE4pKVtdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIk0iKSksIGZ1bnMocm91bmQyKSkKYGBgCgojIFN0dWR5IDIKClN0dWR5IGluZm9ybWF0aW9uOgoKKiBEZXNpZ246IDIgY29uZGl0aW9ucyAoYmVldGxlLCByb2JvdCksIDMtcG9pbnQgcmVzcG9uc2Ugc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJoYXZlIGludGVudGlvbnMiCiogUG9wdWxhdGlvbjogNy05eW8gY2hpbGRyZW4KKiBEYXRlIGNvbmR1Y3RlZDogSnVuZSAtIERlY2VtYmVyIDIwMTYKCiMjIERlbW9ncmFwaGljcwoKYGBge3IgczIgZGVtb2dyYXBoaWNzfQojIG1ha2UgZGVtb2dyYXBoaWNzIHRhYmxlcwpkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgMiIpCiMgZGVtb0R1cmF0aW9uKCJzdHVkeSAyIikKZGVtb0FnZSgic3R1ZHkgMiIpCmRlbW9HZW5kZXIoInN0dWR5IDIiKQojIGRlbW9SYWNlKCJzdHVkeSAyIikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMgRXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzCgojIyMgU3RlcCAxOiBSdW4gbWF4aW1hbCBFRkEgKHdpdGhvdXQgYW5kIHdpdGggcm90YXRpb24pCgpgYGB7ciBzMiBhbGwgbm8gcm90YXRpb259CiMgZXhhbWluZSBzY3JlZSBwbG90CmZhLnBhcmFsbGVsKGQyX2FsbCkKCiMgcnVuIEVGQSB3aXRob3V0IHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMl9hbGxfdW5yb3RhdGVkIDwtIGZhKGQyX2FsbCwgMTMsIHJvdGF0ZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QyX2FsbF91bnJvdGF0ZWQpCgojIGV4YW1pbmUgZWlnZW52YWx1ZXMgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZAplZmFfZDJfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyA8LSBwcmludChlZmFfZDJfYWxsX3Vucm90YXRlZCkkVmFjY291bnRlZCAlPiUKICB0KCkgJT4lCiAgZGF0YS5mcmFtZSgpCgojIGNvdW50IGZhY3RvcnMgd2l0aCBlaWdlbnZhbHVlcyA+IDEgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCA+IDUlCmVmYV9kMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzIDwtIGVmYV9kMl9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzICU+JQogIGZpbHRlcihTUy5sb2FkaW5ncyA+IDEsIFByb3BvcnRpb24uRXhwbGFpbmVkID4gMC4wNSkgJT4lCiAgY291bnQoKSAlPiUKICBhcy5udW1lcmljKCkKZWZhX2QyX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMKYGBgCgpgYGB7ciBzMiBhbGwgcm90YXRpb259CmVmYV9kMl9hbGxfcm90YXRlZF9tYXggPC0gZmEoZDJfYWxsLCAxMywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCmVmYV9kMl9hbGxfcm90YXRlZCA8LSBmYShkMl9hbGwsIGVmYV9kMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKIyBjaGVjayB0aGF0IGVhY2ggb2YgdGhlc2UgZmFjdG9ycyBpcyB0aGUgZG9taW5hbnQgZmFjdG9yIGZvciBhdCBsZWFzdCBvbmUgbWVudGFsIGNhcGFjaXR5IGl0ZW0KZWZhX2QyX2FsbF9yb3RhdGVkX2xvYWRpbmdzIDwtIGZhLnNvcnQobG9hZGluZ3MoZWZhX2QyX2FsbF9yb3RhdGVkKVtdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSkgJT4lCiAgbXV0YXRlKGxvYWRpbmdfYWJzID0gYWJzKGxvYWRpbmcpKSAlPiUKICBncm91cF9ieShjYXBhY2l0eSkgJT4lCiAgdG9wX24oMSwgbG9hZGluZ19hYnMpICU+JQogIHVuZ3JvdXAoKQplZmFfZDJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MKCiMgZHJvcCBhbnkgZmFjdG9ycyB3aGVyZSBuIDwgMQplZmFfZDJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkKCiMgc2V0IG51bWJlciBvZiBmYWN0b3JzIHRvIGV4dHJhY3QKbmZhY3RvcnNfZDJfYWxsIDwtIGVmYV9kMl9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKSAlPiUKICBucm93KCkKbmZhY3RvcnNfZDJfYWxsCmBgYAoKIyMjIFN0ZXAgMjogUnVuIEVGQSB3aXRoIHZhcmltYXggcm90YXRpb24KCmBgYHtyIHMyIGFsbCB2YXJpbWF4IHJvdGF0aW9ufQojIHJ1biBFRkEgd2l0aCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDJfYWxsX3JvdGF0ZWROIDwtIGZhKGQyX2FsbCwgbmZhY3RvcnNfZDJfYWxsLCAKICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDJfYWxsX3JvdGF0ZWROKQoKIyBnZXQgbG9hZGluZ3MgZm9yIGVhY2ggZmFjdG9yCmVmYV9kMl9hbGxfcm90YXRlZE5fbG9hZGluZ3MgPC0gbG9hZGluZ3MoZWZhX2QyX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lIAogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyMjIEZhY3RvciBsb2FkaW5ncyB0YWJsZQoKYGBge3IgczIgbG9hZGluZ3MgdGFibGV9CmRhdGEuZnJhbWUobG9hZGluZ3MoZmEuc29ydChlZmFfZDJfYWxsX3JvdGF0ZWROKSlbXSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJNIikpLCBmdW5zKHJvdW5kMikpCmBgYAoKIyBTdHVkeSAzIAoKU3R1ZHkgaW5mb3JtYXRpb246CgoqIERlc2lnbjogNyBjb25kaXRpb25zIChiZWV0bGUsIHJvYm90LCAuLi4pICsgMiBmb2xsb3ctdXAgY29uZGl0aW9ucywgMy1wb2ludCByZXNwb25zZSBzY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgImhhdmUgaW50ZW50aW9ucyIKKiBQb3B1bGF0aW9uOiA3LTl5byBjaGlsZHJlbgoqIERhdGUgY29uZHVjdGVkOiBKYW51YXJ5IC0gSnVuZSAyMDE3CgojIyBEZW1vZ3JhcGhpY3MKCmBgYHtyIHMzIGRlbW9ncmFwaGljc30KIyBtYWtlIGRlbW9ncmFwaGljcyB0YWJsZXMKZGVtb1NhbXBsZVNpemUoInN0dWR5IDMiKQojIGRlbW9EdXJhdGlvbigic3R1ZHkgMyIpCiMgZGVtb0FnZSgic3R1ZHkgMyIpCiMgZGVtb0dlbmRlcigic3R1ZHkgMyIpCiMgZGVtb1JhY2UoInN0dWR5IDMiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyBFeHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMKCiMjIyBTdGVwIDE6IFJ1biBtYXhpbWFsIEVGQSAod2l0aG91dCBhbmQgd2l0aCByb3RhdGlvbikKCmBgYHtyIHMzIGFsbCBubyByb3RhdGlvbn0KIyBleGFtaW5lIHNjcmVlIHBsb3QKZmEucGFyYWxsZWwoZDNfYWxsKQoKIyBydW4gRUZBIHdpdGhvdXQgcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QzX2FsbF91bnJvdGF0ZWQgPC0gZmEoZDNfYWxsLCA2LCByb3RhdGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kM19hbGxfdW5yb3RhdGVkKQoKIyBleGFtaW5lIGVpZ2VudmFsdWVzIGFuZCB2YXJpYW5jZSBleHBsYWluZWQKZWZhX2QzX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgPC0gcHJpbnQoZWZhX2QzX2FsbF91bnJvdGF0ZWQpJFZhY2NvdW50ZWQgJT4lCiAgdCgpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBjb3VudCBmYWN0b3JzIHdpdGggZWlnZW52YWx1ZXMgPiAxIGFuZCB2YXJpYW5jZSBleHBsYWluZWQgPiA1JQplZmFfZDNfYWxsX3Vucm90YXRlZF9uZmFjdG9ycyA8LSBlZmFfZDNfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyAlPiUKICBmaWx0ZXIoU1MubG9hZGluZ3MgPiAxLCBQcm9wb3J0aW9uLkV4cGxhaW5lZCA+IDAuMDUpICU+JQogIGNvdW50KCkgJT4lCiAgYXMubnVtZXJpYygpCmVmYV9kM19hbGxfdW5yb3RhdGVkX25mYWN0b3JzCmBgYAoKYGBge3IgczMgYWxsIHJvdGF0aW9ufQplZmFfZDNfYWxsX3JvdGF0ZWRfbWF4IDwtIGZhKGQzX2FsbCwgMTMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgplZmFfZDNfYWxsX3JvdGF0ZWQgPC0gZmEoZDNfYWxsLCBlZmFfZDNfYWxsX3Vucm90YXRlZF9uZmFjdG9ycywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCiMgY2hlY2sgdGhhdCBlYWNoIG9mIHRoZXNlIGZhY3RvcnMgaXMgdGhlIGRvbWluYW50IGZhY3RvciBmb3IgYXQgbGVhc3Qgb25lIG1lbnRhbCBjYXBhY2l0eSBpdGVtCmVmYV9kM19hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kM19hbGxfcm90YXRlZClbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShsb2FkaW5nX2FicyA9IGFicyhsb2FkaW5nKSkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGxvYWRpbmdfYWJzKSAlPiUKICB1bmdyb3VwKCkKZWZhX2QzX2FsbF9yb3RhdGVkX2xvYWRpbmdzCgojIGRyb3AgYW55IGZhY3RvcnMgd2hlcmUgbiA8IDEKZWZhX2QzX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2QzX2FsbCA8LSBlZmFfZDNfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkgJT4lCiAgbnJvdygpCm5mYWN0b3JzX2QzX2FsbApgYGAKCiMjIyBTdGVwIDI6IFJ1biBFRkEgd2l0aCB2YXJpbWF4IHJvdGF0aW9uCgpgYGB7ciBzMyBhbGwgdmFyaW1heCByb3RhdGlvbn0KIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QzX2FsbF9yb3RhdGVkTiA8LSBmYShkM19hbGwsIG5mYWN0b3JzX2QzX2FsbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QzX2FsbF9yb3RhdGVkTikKCiMgZ2V0IGxvYWRpbmdzIGZvciBlYWNoIGZhY3RvcgplZmFfZDNfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kM19hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMjIyBGYWN0b3IgbG9hZGluZ3MgdGFibGUKCmBgYHtyIHMzIGxvYWRpbmdzIHRhYmxlfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QzX2FsbF9yb3RhdGVkTikpW10pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTSIpKSwgZnVucyhyb3VuZDIpKQpgYGAKCiMjIyBTdWJzY2FsZXMKCiMjIyMgUmVsaWFiaWxpdHkgKGFuZCBpbnRlcmNvcnJlbGF0aW9ucyAtIHNlZSBhbHBoYSkKCmBgYHtyIHMzIHN1YnNjYWxlIHJlbGlhYmlsaXR5fQojIENyb25iYWNoJ3MgYWxwaGEgKHN1YnNjYWxlcykKa2V5cy5saXN0IDwtIGxpc3QoU09VTCA9IGMoInByaWRlIiwgImRlcHJlc3NlZCIsICJkaXNyZXNwZWN0ZWQiLCAiZ3VpbHQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgImVtYmFycmFzc2VkIiwgImhhcHB5IiwgImxvdmUiKSwKICAgICAgICAgICAgICAgICAgQk9EWSA9IGMoImh1bmdyeSIsICJvZG9ycyIsICJmZWFyIiwgInBhaW4iLCAidGlyZWQiLCAiYW5ncnkiLCAibmF1c2VhdGVkIiksCiAgICAgICAgICAgICAgICAgIE1JTkQgPSBjKCJyZWFzb25pbmciLCAiY2hvaWNlcyIsICJyZW1lbWJlcmluZyIsICJ0ZW1wZXJhdHVyZSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAiY29uc2Npb3VzIiwgImRlcHRoIikpIApzY29yZXMgPC0gc2NvcmVJdGVtcyhrZXlzLmxpc3QsIGQzX2FsbCwgbWluID0gMCwgbWF4ID0gMSkgICMgb3IganVzdCB1c2UgdGhlIGtleXMubGl0CiMgc3VtbWFyeShzY29yZXMpCnNjb3JlcwoKIyBvbWVnYQpvbWVnYShkM19hbGwsIHBsb3QgPSBGKQpgYGAKCiMgU3R1ZHkgNAoKU3R1ZHkgaW5mb3JtYXRpb246CgoqIERlc2lnbjogNyBjb25kaXRpb25zIChiZWV0bGUsIHJvYm90LCAuLi4pICsgMiBmb2xsb3ctdXAgY29uZGl0aW9ucyAoZG9sbCwgdGVkZHkgYmVhciksIDMtcG9pbnQgcmVzcG9uc2Ugc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJoYXZlIGludGVudGlvbnMiCiogUG9wdWxhdGlvbjogNC02eW8gY2hpbGRyZW4KKiBEYXRlIGNvbmR1Y3RlZDogTWFyY2ggMjAxNyAtIHByZXNlbnQKCiMjIERlbW9ncmFwaGljcwoKYGBge3IgczQgZGVtb2dyYXBoaWNzfQojIG1ha2UgZGVtb2dyYXBoaWNzIHRhYmxlcwpkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgNCIpCiMgZGVtb0R1cmF0aW9uKCJzdHVkeSA0IikKZGVtb0FnZSgic3R1ZHkgNCIpCiMgZGVtb0dlbmRlcigic3R1ZHkgNCIpCmRlbW9SYWNlKCJzdHVkeSA0IikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMgRXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzCgojIyMgU3RlcCAxOiBSdW4gbWF4aW1hbCBFRkEgKHdpdGhvdXQgYW5kIHdpdGggcm90YXRpb24pCgpgYGB7ciBzNCBhbGwgbm8gcm90YXRpb259CiMgZXhhbWluZSBzY3JlZSBwbG90CmZhLnBhcmFsbGVsKGQ0X2FsbCkKCiMgcnVuIEVGQSB3aXRob3V0IHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kNF9hbGxfdW5yb3RhdGVkIDwtIGZhKGQ0X2FsbCwgNiwgcm90YXRlID0gIm5vbmUiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2Q0X2FsbF91bnJvdGF0ZWQpCgojIGV4YW1pbmUgZWlnZW52YWx1ZXMgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZAplZmFfZDRfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyA8LSBwcmludChlZmFfZDRfYWxsX3Vucm90YXRlZCkkVmFjY291bnRlZCAlPiUKICB0KCkgJT4lCiAgZGF0YS5mcmFtZSgpCgojIGNvdW50IGZhY3RvcnMgd2l0aCBlaWdlbnZhbHVlcyA+IDEgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCA+IDUlCmVmYV9kNF9hbGxfdW5yb3RhdGVkX25mYWN0b3JzIDwtIGVmYV9kNF9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzICU+JQogIGZpbHRlcihTUy5sb2FkaW5ncyA+IDEsIFByb3BvcnRpb24uRXhwbGFpbmVkID4gMC4wNSkgJT4lCiAgY291bnQoKSAlPiUKICBhcy5udW1lcmljKCkKZWZhX2Q0X2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMKYGBgCgpgYGB7ciBzNCBhbGwgcm90YXRpb259CmVmYV9kNF9hbGxfcm90YXRlZF9tYXggPC0gZmEoZDRfYWxsLCAxMywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCmVmYV9kNF9hbGxfcm90YXRlZCA8LSBmYShkNF9hbGwsIGVmYV9kNF9hbGxfdW5yb3RhdGVkX25mYWN0b3JzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKIyBjaGVjayB0aGF0IGVhY2ggb2YgdGhlc2UgZmFjdG9ycyBpcyB0aGUgZG9taW5hbnQgZmFjdG9yIGZvciBhdCBsZWFzdCBvbmUgbWVudGFsIGNhcGFjaXR5IGl0ZW0KZWZhX2Q0X2FsbF9yb3RhdGVkX2xvYWRpbmdzIDwtIGZhLnNvcnQobG9hZGluZ3MoZWZhX2Q0X2FsbF9yb3RhdGVkKVtdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSkgJT4lCiAgbXV0YXRlKGxvYWRpbmdfYWJzID0gYWJzKGxvYWRpbmcpKSAlPiUKICBncm91cF9ieShjYXBhY2l0eSkgJT4lCiAgdG9wX24oMSwgbG9hZGluZ19hYnMpICU+JQogIHVuZ3JvdXAoKQplZmFfZDRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MKCiMgZHJvcCBhbnkgZmFjdG9ycyB3aGVyZSBuIDwgMQplZmFfZDRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkKCiMgc2V0IG51bWJlciBvZiBmYWN0b3JzIHRvIGV4dHJhY3QKbmZhY3RvcnNfZDRfYWxsIDwtIGVmYV9kNF9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKSAlPiUKICBucm93KCkKbmZhY3RvcnNfZDRfYWxsCmBgYAoKIyMjIFN0ZXAgMjogUnVuIEVGQSB3aXRoIHZhcmltYXggcm90YXRpb24KCmBgYHtyIHM0IGFsbCB2YXJpbWF4IHJvdGF0aW9ufQojIHJ1biBFRkEgd2l0aCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDRfYWxsX3JvdGF0ZWROIDwtIGZhKGQ0X2FsbCwgbmZhY3RvcnNfZDRfYWxsLCAKICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDRfYWxsX3JvdGF0ZWROKQoKIyBnZXQgbG9hZGluZ3MgZm9yIGVhY2ggZmFjdG9yCmVmYV9kNF9hbGxfcm90YXRlZE5fbG9hZGluZ3MgPC0gbG9hZGluZ3MoZWZhX2Q0X2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lIAogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyMjIEZhY3RvciBsb2FkaW5ncyB0YWJsZQoKYGBge3IgczQgbG9hZGluZ3MgdGFibGV9CmRhdGEuZnJhbWUobG9hZGluZ3MoZmEuc29ydChlZmFfZDRfYWxsX3JvdGF0ZWROKSlbXSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJNIikpLCBmdW5zKHJvdW5kMikpCmBgYAoKIyBCaWcgZmFjdG9yIGxvYWRpbmdzIHRhYmxlIGZvciBhbGwgc3R1ZGllcyAoU3R1ZGllcyAxLTQpCgpgYGB7ciBhbGwgc3R1ZGllcyBsb2FkaW5ncyB0YWJsZX0KIyBtYW51YWxseSBzZXQgMyBmYWN0b3JzCm9yZGVyX3MxX21hbnVhbCA8LSBsb2FkaW5ncyhmYS5zb3J0KGZhKGQxX2FsbCwgbmZhY3RvcnMgPSAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLCBjb3IgPSBjaG9zZW5Db3JUeXBlKSkpW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIm9yZGVyMV9tYW51YWwiKSAlPiUKICByZW5hbWUoczFfaGVhcnQgPSBNUjIsIHMxX2JvZHkgPSBNUjEsIHMxX21pbmQgPSBNUjMpCgpvcmRlcl9zMSA8LSBsb2FkaW5ncyhmYS5zb3J0KGVmYV9kMV9hbGxfcm90YXRlZE4pKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJvcmRlcjEiKSAlPiUKICByZW5hbWUoczFfaGVhcnQgPSBNUjIsIHMxX2JvZHkgPSBNUjEsIHMxX21pbmQgPSBNUjMpCgpvcmRlcl9zMiA8LSBsb2FkaW5ncyhmYS5zb3J0KGVmYV9kMl9hbGxfcm90YXRlZE4pKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikgJT4lCiAgcmVuYW1lKHMyX2JvZHkgPSBNUjIsIHMyX2hlYXJ0ID0gTVIxLCBzMl9taW5kID0gTVIzKQoKb3JkZXJfczMgPC0gbG9hZGluZ3MoZmEuc29ydChlZmFfZDNfYWxsX3JvdGF0ZWROKSlbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpICU+JQogIHJlbmFtZShzM19ib2R5ID0gTVIxLCBzM19oZWFydCA9IE1SMiwgczNfbWluZCA9IE1SMykKCm9yZGVyX3M0IDwtIGxvYWRpbmdzKGZhLnNvcnQoZWZhX2Q0X2FsbF9yb3RhdGVkTikpW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKSAlPiUKICByZW5hbWUoczRfYm9keSA9IE1SMSwgCiAgICAgICAgICMgczRfaGVhcnQgPSBNUjMsIAogICAgICAgICBzNF9taW5kID0gTVIyKQoKIyBtYW51YWxseSBzZXQgMyBmYWN0b3JzCm9yZGVyX3M0X21hbnVhbCA8LSBsb2FkaW5ncyhmYS5zb3J0KGZhKGQxX2FsbCwgbmZhY3RvcnMgPSAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLCBjb3IgPSBjaG9zZW5Db3JUeXBlKSkpW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIm9yZGVyMV9tYW51YWwiKSAlPiUKICByZW5hbWUoczRfaGVhcnQgPSBNUjIsIHM0X2JvZHkgPSBNUjEsIHM0X21pbmQgPSBNUjMpCgpiaWdUYWJsZSA8LSBvcmRlcl9zMV9tYW51YWwgJT4lICMgY291bGQgc3Vic3RpdHV0ZSBvcmRlcl9zMQogIGZ1bGxfam9pbihvcmRlcl9zMikgJT4lCiAgZnVsbF9qb2luKG9yZGVyX3MzKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczRfbWFudWFsKSAlPiUgIyBjb3VsZCBzdWJzdGl0dXRlIG9yZGVyX3M0CiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoInMiKSksIGZ1bnMocm91bmQyKSkgJT4lCiAgc2VsZWN0KG9yZGVyMV9tYW51YWwsICMgY291bGQgc3ViaXN0aXR1dGUgb3JkZXJfczEKICAgICAgICAgY2FwYWNpdHksIGVuZHNfd2l0aCgiaGVhcnQiKSwgZW5kc193aXRoKCJib2R5IiksIGVuZHNfd2l0aCgibWluZCIpKSAKCmJpZ1RhYmxlCmBgYAoKIyBGaWd1cmVzCgpgYGB7ciBwbG90dGluZyBzZXR1cCBjaGFyYWN0ZXIgbWVhbnMsIGluY2x1ZGUgPSBGfQojIGJvb3RzdHJhcCA5NSUgQ0lzIGZvciByYXRpbmdzIGJ5IGNoYXJhY3RlciAobm9ucGFyYW1ldHJpYykKIyBzdHVkeSAxCmNoYXJfcGxvdHRpbmdfcmF0aW5nc19zMSA8LSBkMSAlPiUgCiAgc2VsZWN0KHN1YmlkLCBjaGFyYWN0ZXIsIGNhcGFjaXR5LCByZXNwb25zZU51bSkgJT4lCiAgbXVsdGlfYm9vdChjb2x1bW4gPSAicmVzcG9uc2VOdW0iLAogICAgICAgICAgICAgc3VtbWFyeV9mdW5jdGlvbiA9ICJtZWFuX25hIiwKICAgICAgICAgICAgIHN1bW1hcnlfZ3JvdXBzID0gYygiY2hhcmFjdGVyIiwgImNhcGFjaXR5IiksCiAgICAgICAgICAgICBzdGF0aXN0aWNzX2Z1bmN0aW9ucyA9IGMoImNpX2xvd2VyX25hIiwgIm1lYW5fbmEiLCAiY2lfdXBwZXJfbmEiKSkgJT4lCiAgZnVsbF9qb2luKGRlbW9TYW1wbGVTaXplKCJzdHVkeSAxIikgJT4lIGZpbHRlcihjaGFyYWN0ZXIgIT0gImFsbCIpKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgMSIpCgojIHN0dWR5IDIKY2hhcl9wbG90dGluZ19yYXRpbmdzX3MyIDwtIGQyICU+JSAKICBzZWxlY3Qoc3ViaWQsIGNoYXJhY3RlciwgY2FwYWNpdHksIHJlc3BvbnNlTnVtKSAlPiUKICBtdWx0aV9ib290KGNvbHVtbiA9ICJyZXNwb25zZU51bSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2Z1bmN0aW9uID0gIm1lYW5fbmEiLAogICAgICAgICAgICAgc3VtbWFyeV9ncm91cHMgPSBjKCJjaGFyYWN0ZXIiLCAiY2FwYWNpdHkiKSwKICAgICAgICAgICAgIHN0YXRpc3RpY3NfZnVuY3Rpb25zID0gYygiY2lfbG93ZXJfbmEiLCAibWVhbl9uYSIsICJjaV91cHBlcl9uYSIpKSAlPiUKICBmdWxsX2pvaW4oZGVtb1NhbXBsZVNpemUoInN0dWR5IDIiKSAlPiUgZmlsdGVyKGNoYXJhY3RlciAhPSAiYWxsIikpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAyIikKCiMgc3R1ZHkgMwpjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczMgPC0gZDMgJT4lIAogIHNlbGVjdChzdWJpZCwgY2hhcmFjdGVyLCBjYXBhY2l0eSwgcmVzcG9uc2VOdW0pICU+JQogIG11bHRpX2Jvb3QoY29sdW1uID0gInJlc3BvbnNlTnVtIiwKICAgICAgICAgICAgIHN1bW1hcnlfZnVuY3Rpb24gPSAibWVhbl9uYSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2dyb3VwcyA9IGMoImNoYXJhY3RlciIsICJjYXBhY2l0eSIpLAogICAgICAgICAgICAgc3RhdGlzdGljc19mdW5jdGlvbnMgPSBjKCJjaV9sb3dlcl9uYSIsICJtZWFuX25hIiwgImNpX3VwcGVyX25hIikpICU+JQogIGZ1bGxfam9pbihkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgMyIpICU+JSBmaWx0ZXIoY2hhcmFjdGVyICE9ICJhbGwiKSkgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDMiKQoKIyBzdHVkeSA0CmNoYXJfcGxvdHRpbmdfcmF0aW5nc19zNCA8LSBkNCAlPiUgCiAgc2VsZWN0KHN1YmlkLCBjaGFyYWN0ZXIsIGNhcGFjaXR5LCByZXNwb25zZU51bSkgJT4lCiAgbXVsdGlfYm9vdChjb2x1bW4gPSAicmVzcG9uc2VOdW0iLAogICAgICAgICAgICAgc3VtbWFyeV9mdW5jdGlvbiA9ICJtZWFuX25hIiwKICAgICAgICAgICAgIHN1bW1hcnlfZ3JvdXBzID0gYygiY2hhcmFjdGVyIiwgImNhcGFjaXR5IiksCiAgICAgICAgICAgICBzdGF0aXN0aWNzX2Z1bmN0aW9ucyA9IGMoImNpX2xvd2VyX25hIiwgIm1lYW5fbmEiLCAiY2lfdXBwZXJfbmEiKSkgJT4lCiAgZnVsbF9qb2luKGRlbW9TYW1wbGVTaXplKCJzdHVkeSA0IikgJT4lIGZpbHRlcihjaGFyYWN0ZXIgIT0gImFsbCIpKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgNCIpCmBgYAoKYGBge3IgcGxvdHRpbmcgc2V0dXAgY2hhcmFjdGVyIG1lYW5zIG1lcmdlLCBpbmNsdWRlID0gRn0KY2hhcl9wbG90dGluZ19yYXRpbmdzX2FsbCA8LSBjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczEgJT4lCiAgZnVsbF9qb2luKGNoYXJfcGxvdHRpbmdfcmF0aW5nc19zMikgJT4lCiAgZnVsbF9qb2luKGNoYXJfcGxvdHRpbmdfcmF0aW5nc19zMykgJT4lCiAgZnVsbF9qb2luKGNoYXJfcGxvdHRpbmdfcmF0aW5nc19zNCkgJT4lCiAgZmlsdGVyKCFpcy5uYShjaGFyYWN0ZXIpKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgbXV0YXRlKHN0dWR5ID0gZmFjdG9yKHN0dWR5KSwKICAgICAgICAgY29uZGl0aW9uID0gZmFjdG9yKGNoYXJhY3RlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNvbXB1dGVyIiwgImRvbGwiLCAidGVkZHlfYmVhciIsICJyb2JvdCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpKSkKYGBgCgpgYGB7ciBwbG90dGluZyBzZXR1cCBjYXBhY2l0eSB3b3JkaW5ncywgaW5jbHVkZSA9IEZ9CmNoYXJfcGxvdHRpbmdfd29yZGluZ3MgPC0gY2hhcl9wbG90dGluZ19yYXRpbmdzX2FsbCAlPiUKICB1bmdyb3VwKCkgJT4lCiAgc2VsZWN0KGNhcGFjaXR5KSAlPiUKICBkaXN0aW5jdCgpICU+JSAKICBtdXRhdGUod29yZGluZyA9IGZhY3RvcigKICAgIHJlY29kZShjYXBhY2l0eSwKICAgICAgICAgICBoYXBweSA9ICJmZWVsIGhhcHB5IiwKICAgICAgICAgICBkZXByZXNzZWQgPSAiZmVlbCBzYWQiLAogICAgICAgICAgIGZlYXIgPSAiZmVlbCBzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImdldCBhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJmZWVsIGNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIHNvdW5kcyIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSB0aGluZ3MiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInNlbnNlIHRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwgdGhpbmdzIiwKICAgICAgICAgICBkZXB0aCA9ICJzZW5zZS4uLiBjbG9zZSBieSBvciBmYXIgYXdheSIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gImRvIG1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gImhhdmUgdGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGluZ3MiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIHRoaW5ncyIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJoYXZlIGJlbGllZnMuLi4iLAogICAgICAgICAgIGh1bmdyeSA9ICJnZXQgaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJmZWVsIHRpcmVkIiwKICAgICAgICAgICBwYWluID0gImZlZWwgcGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gImZlZWwgc2ljay4uLiIsCiAgICAgICAgICAgc2FmZSA9ICJmZWVsIHNhZmUiLAogICAgICAgICAgIGxvdmUgPSAiZmVlbCBsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUgc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSB3aXRoIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGd1aWx0ID0gImZlZWwgZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiZ2V0IGh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUgd2hhdCB0byBkbyIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJtYWtlIGNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gImhhdmUgc2VsZi1jb250cm9sLi4uIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gIm1ha2UgcGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiaGF2ZSBnb2Fscy4uLiIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImJlIGF3YXJlIG9mIHRoaW5ncyIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJiZSBhd2FyZSBvZiBpdHNlbGYiLAogICAgICAgICAgIGRlc2lyZXMgPSAiaGF2ZSBkZXNpcmVzLi4uIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJmZWVsIGVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAidW5kZXJzdGFuZCBob3cgc29tZWJvZHkgZWxzZSBpcyBmZWVsaW5nIiwKICAgICAgICAgICBqb3kgPSAiZmVlbCBqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gImtub3cgd2hhdCdzIG5pY2UgYW5kIHdoYXQncyBtZWFuIiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJoYXZlIGEgcGVyc29uYWxpdHkuLi4iLAogICAgICAgICAgIHBsZWFzdXJlID0gImZlZWwgcGxlYXN1cmUuLi4iLAogICAgICAgICAgIHByb3VkID0gImZlZWwgcHJvdWQiKSkpCmBgYAoKYGBge3IgcGxvdHRpbmcgc2V0dXAgbG9hZGluZ3MsIGluY2x1ZGUgPSBGfQojIG1lcmdlIHdpdGggbG9hZGluZ3MsIG9yZGVyaW5ncywgYW5kIGRvbWluYW50IGZhY3RvcnMgZnJvbSBlYWNoIHN0dWR5IApjaGFyX3Bsb3R0aW5nIDwtIGNoYXJfcGxvdHRpbmdfcmF0aW5nc19hbGwgJT4lCiAgZnVsbF9qb2luKGNoYXJfcGxvdHRpbmdfd29yZGluZ3MpICU+JQogIGZ1bGxfam9pbihvcmRlcl9zMSAlPiUKICAgICAgICAgICAgICByZW5hbWUoczFfTVIxID0gczFfYm9keSwgczFfTVIyID0gczFfaGVhcnQsIHMxX01SMyA9IHMxX21pbmQpICU+JQogICAgICAgICAgICAgIG11dGF0ZShzMV9NUjFfYWJzID0gYWJzKHMxX01SMSksCiAgICAgICAgICAgICAgICAgICAgIHMxX01SMl9hYnMgPSBhYnMoczFfTVIyKSwKICAgICAgICAgICAgICAgICAgICAgczFfTVIzX2FicyA9IGFicyhzMV9NUjMpLAogICAgICAgICAgICAgICAgICAgICBzMV9mYWN0b3IgPSAKICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczFfTVIxX2FicyA+IHMxX01SMl9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX01SMV9hYnMgPiBzMV9NUjNfYWJzLCAiQk9EWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzMV9NUjJfYWJzID4gczFfTVIxX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX01SMl9hYnMgPiBzMV9NUjNfYWJzLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMxX01SM19hYnMgPiBzMV9NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX01SM19hYnMgPiBzMV9NUjJfYWJzLCAiTUlORCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICAgICAgICAgICAgICAgICAgIHMxX2NvbG9yID0gcmVjb2RlKHMxX2ZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJPRFkiID0gIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQiID0gIiMzNzdFQjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCIgPSAiIzREQUY0QSIpLAogICAgICAgICAgICAgICAgICAgICBzMV9vcmRlciA9IGFzLm51bWVyaWMob3JkZXIxKSkgJT4lCiAgICAgICAgICAgICAgc2VsZWN0KC1zMV9NUjFfYWJzLCAtczFfTVIyX2FicywgLXMxX01SM19hYnMpKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczIgJT4lCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JQogICAgICAgICAgICAgIHJlbmFtZShzMl9NUjEgPSBzMl9oZWFydCwgczJfTVIyID0gczJfYm9keSwgczJfTVIzID0gczJfbWluZCkgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHMyX01SMV9hYnMgPSBhYnMoczJfTVIxKSwKICAgICAgICAgICAgICAgICAgICAgczJfTVIyX2FicyA9IGFicyhzMl9NUjIpLAogICAgICAgICAgICAgICAgICAgICBzMl9NUjNfYWJzID0gYWJzKHMyX01SMyksCiAgICAgICAgICAgICAgICAgICAgIHMyX2ZhY3RvciA9IAogICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzMl9NUjFfYWJzID4gczJfTVIyX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczJfTVIxX2FicyA+IHMyX01SM19hYnMsICJCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMyX01SMl9hYnMgPiBzMl9NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczJfTVIyX2FicyA+IHMyX01SM19hYnMsICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczJfTVIzX2FicyA+IHMyX01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczJfTVIzX2FicyA+IHMyX01SMl9hYnMsICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgICAgICAgICAgICAgICAgICAgczJfY29sb3IgPSByZWNvZGUoczJfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSIgPSAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIgPSAiIzM3N0VCOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIiA9ICIjNERBRjRBIikpICU+JQogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiczJfb3JkZXIiKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczJfb3JkZXIgPSBhcy5udW1lcmljKHMyX29yZGVyKSkgJT4lCiAgICAgICAgICAgICAgc2VsZWN0KC1zMl9NUjFfYWJzLCAtczJfTVIyX2FicywgLXMyX01SM19hYnMpKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczMgJT4lCiAgICAgICAgICAgICAgcmVuYW1lKHMzX01SMSA9IHMzX2hlYXJ0LCBzM19NUjIgPSBzM19ib2R5LCBzM19NUjMgPSBzM19taW5kKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczNfTVIxX2FicyA9IGFicyhzM19NUjEpLAogICAgICAgICAgICAgICAgICAgICBzM19NUjJfYWJzID0gYWJzKHMzX01SMiksCiAgICAgICAgICAgICAgICAgICAgIHMzX01SM19hYnMgPSBhYnMoczNfTVIzKSwKICAgICAgICAgICAgICAgICAgICAgczNfZmFjdG9yID0gCiAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMzX01SMV9hYnMgPiBzM19NUjJfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzM19NUjFfYWJzID4gczNfTVIzX2FicywgIkJPRFkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczNfTVIyX2FicyA+IHMzX01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzM19NUjJfYWJzID4gczNfTVIzX2FicywgIkhFQVJUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzM19NUjNfYWJzID4gczNfTVIxX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzM19NUjNfYWJzID4gczNfTVIyX2FicywgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpLAogICAgICAgICAgICAgICAgICAgICBzM19jb2xvciA9IHJlY29kZShzM19mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCT0RZIiA9ICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhFQVJUIiA9ICIjMzc3RUI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQiID0gIiM0REFGNEEiKSkgJT4lCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJzM19vcmRlciIpICU+JQogICAgICAgICAgICAgIG11dGF0ZShzM19vcmRlciA9IGFzLm51bWVyaWMoczNfb3JkZXIpKSAlPiUKICAgICAgICAgICAgICBzZWxlY3QoLXMzX01SMV9hYnMsIC1zM19NUjJfYWJzLCAtczNfTVIzX2FicykpICU+JQogIGZ1bGxfam9pbihvcmRlcl9zNCAlPiUKICAgICAgICAgICAgICByZW5hbWUoczRfTVIxID0gczRfYm9keSwgczRfTVIyID0gczRfbWluZCkgJT4lICMsIHM0X01SMyA9IHM0X2hlYXJ0KSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczRfTVIxX2FicyA9IGFicyhzNF9NUjEpLAogICAgICAgICAgICAgICAgICAgICBzNF9NUjJfYWJzID0gYWJzKHM0X01SMiksCiAgICAgICAgICAgICAgICAgICAgICMgczRfTVIzX2FicyA9IGFicyhzNF9NUjMpLAogICAgICAgICAgICAgICAgICAgICBzNF9mYWN0b3IgPSAKICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczRfTVIxX2FicyA+IHM0X01SMl9hYnMsICJCT0RZIiwgIk1JTkQiKSwKICAgICAgICAgICAgICAgICAgICAgIyBzNF9mYWN0b3IgPSAKICAgICAgICAgICAgICAgICAgICAgIyAgIGlmZWxzZShzNF9NUjFfYWJzID4gczRfTVIyX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgICBzNF9NUjFfYWJzID4gczRfTVIzX2FicywgIkJPRFkiLAogICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIGlmZWxzZShzNF9NUjJfYWJzID4gczRfTVIxX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgczRfTVIyX2FicyA+IHM0X01SM19hYnMsICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgICAgICAgIGlmZWxzZShzNF9NUjNfYWJzID4gczRfTVIxX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgIHM0X01SM19hYnMgPiBzNF9NUjJfYWJzLCAiTUlORCIsCiAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgICAgICAgICAgICAgICAgICAgczRfY29sb3IgPSByZWNvZGUoczRfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSIgPSAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIgPSAiIzM3N0VCOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIiA9ICIjNERBRjRBIikpICU+JQogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiczRfb3JkZXIiKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczRfb3JkZXIgPSBhcy5udW1lcmljKHM0X29yZGVyKSkgJT4lCiAgICAgICAgICAgICAgc2VsZWN0KC1zNF9NUjFfYWJzLCAtczRfTVIyX2FicykpICMsIC1zNF9NUjNfYWJzKSkKCiMgY29uZmlndXJlIHBsb3QgbGFiZWxzCmxhYmVsX2RmX3MxIDwtIGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgMSIpICU+JSBzZWxlY3QoY29uZGl0aW9uLCBuKSAlPiUgdW5pcXVlKCkKbGFiZWxfZGZfczIgPC0gY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSAyIikgJT4lIHNlbGVjdChjb25kaXRpb24sIG4pICU+JSB1bmlxdWUoKQpsYWJlbF9kZl9zMyA8LSBjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDMiKSAlPiUgc2VsZWN0KGNvbmRpdGlvbiwgbikgJT4lIHVuaXF1ZSgpCmxhYmVsX2RmX3M0IDwtIGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgNCIpICU+JSBzZWxlY3QoY29uZGl0aW9uLCBuKSAlPiUgdW5pcXVlKCkKCmZhY2V0TGFic19zMSA8LSBnc3ViKCIgXFwoIiwgIlxuKCIsIG1ha2VGYWNldExhYnMoY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSAxIikpKQpmYWNldExhYnNfczIgPC0gZ3N1YigiIFxcKCIsICJcbigiLCBtYWtlRmFjZXRMYWJzKGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgMiIpKSkKZmFjZXRMYWJzX3MzIDwtIGdzdWIoIiBcXCgiLCAiXG4oIiwgbWFrZUZhY2V0TGFicyhjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDMiKSkpCmZhY2V0TGFic19zNCA8LSBnc3ViKCIgXFwoIiwgIlxuKCIsIG1ha2VGYWNldExhYnMoY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSA0IikpKQoKIyBjb25maWd1cmUgY3VzdG9tIHBhbGV0dGUKbXlQYWxldHRlIDwtIGJyZXdlci5wYWwoMywgIlNldDEiKTsgbmFtZXMobXlQYWxldHRlKSA8LSBjKCJIRUFSVCIsICJCT0RZIiwgIk1JTkQiKQoKcGFsZXR0ZV9iYXNlIDwtIGNoYXJfcGxvdHRpbmcgJT4lIAogIHNlbGVjdChjYXBhY2l0eSwgZW5kc193aXRoKCJfZmFjdG9yIikpICU+JQogIGRpc3RpbmN0KCkKIyBhZGp1c3QgYnkgaGFuZCBkZXBlbmRpbmcgb24gb3JkZXIgb2YgZmFjdG9ycyEhCnBhbGV0dGVfczEgPC0gYyhyZXAobXlQYWxldHRlWyJNSU5EIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMxX2ZhY3RvciA9PSAiTUlORCIpICU+JSBjb3VudCgpKSwKICAgICAgICAgICAgICAgIHJlcChteVBhbGV0dGVbIkhFQVJUIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMxX2ZhY3RvciA9PSAiSEVBUlQiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJCT0RZIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMxX2ZhY3RvciA9PSAiQk9EWSIpICU+JSBjb3VudCgpKSkKcGFsZXR0ZV9zMiA8LSBjKHJlcChteVBhbGV0dGVbIk1JTkQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczJfZmFjdG9yID09ICJNSU5EIikgJT4lIGNvdW50KCkpLAogICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiQk9EWSJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMl9mYWN0b3IgPT0gIkJPRFkiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJIRUFSVCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMl9mYWN0b3IgPT0gIkhFQVJUIikgJT4lIGNvdW50KCkpKQpwYWxldHRlX3MzIDwtIGMocmVwKG15UGFsZXR0ZVsiTUlORCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzM19mYWN0b3IgPT0gIk1JTkQiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJCT0RZIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMzX2ZhY3RvciA9PSAiQk9EWSIpICU+JSBjb3VudCgpKSwKICAgICAgICAgICAgICAgIHJlcChteVBhbGV0dGVbIkhFQVJUIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMzX2ZhY3RvciA9PSAiSEVBUlQiKSAlPiUgY291bnQoKSkpCiMgcGFsZXR0ZV9zNCA8LSBjKHJlcChteVBhbGV0dGVbIk1JTkQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczRfZmFjdG9yID09ICJNSU5EIikgJT4lIGNvdW50KCkpLAojICAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJIRUFSVCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzNF9mYWN0b3IgPT0gIkhFQVJUIikgJT4lIGNvdW50KCkpLAojICAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJCT0RZIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHM0X2ZhY3RvciA9PSAiQk9EWSIpICU+JSBjb3VudCgpKSkKYGBgCgojIyAzRCBzY2F0dGVycGxvdHMKCkZhY3RvciBsb2FkaW5ncyBmb3IgdGhlIDQwIG1lbnRhbCBjYXBhY2l0aWVzIG9uIHRoZSB0aHJlZSByb3RhdGVkIGZhY3RvcnMgaW4gU3R1ZHkgMS4gSXRlbXMgYXJlIGNvbG9yZWQgYnkgdGhlaXIgZG9taW5hbnQgZmFjdG9yIGxvYWRpbmc6IEl0ZW1zIHRoYXQgbG9hZGVkIG1vc3Qgc3Ryb25nbHkgb24gdGhlIGJvZHkgZmFjdG9yIChib2RpbHkgc3RhdGVzIGFuZCB3aWxsKSBhcmUgaW4gcmVkOyBpdGVtcyB0aGF0IGxvYWRlZCBtb3N0IHN0cm9uZ2x5IG9uIHRoZSBoZWFydCBmYWN0b3IgKHNvY2lhbC1lbW90aW9uYWwgZXhwZXJpZW5jZXMgYW5kIG1vcmFsaXR5KSBhcmUgaW4gYmx1ZTsgYW5kIGl0ZW1zIHRoYXQgbG9hZGVkIG1vc3Qgc3Ryb25nbHkgb24gdGhlIG1pbmQgZmFjdG9yIChwZXJjZXB0dWFsLWNvZ25pdGl2ZSBhYmlsaXRpZXMgYW5kIGdvYWwgcHVyc3VpdCkgYXJlIGluIGdyZWVuLgoKIyMjIFN0dWR5IDEgKGFkdWx0cykKCmBgYHtyIGZpZ3VyZSAzZCBzY2F0dGVyIHMxfQojIHNldCB1cCBsYWJlbHMgZm9yIHBsb3QgKHNob3J0ZW5lZCB2ZXJzaW9uIG9mIG1lbnRhbCBjYXBhY2l0eSBpdGVtcykKd29yZGluZ19zMSA8LSBsb2FkaW5ncyhlZmFfZDFfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBzZWxlY3QoaXRlbSkgJT4lCiAgbXV0YXRlKHdvcmRpbmcgPSBmYWN0b3IoCiAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICBoYXBweSA9ICJmZWVsIGhhcHB5IiwKICAgICAgICAgICBkZXByZXNzZWQgPSAiZmVlbCBzYWQiLAogICAgICAgICAgIGZlYXIgPSAiZmVlbCBzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImdldCBhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJmZWVsIGNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIHNvdW5kcyIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSB0aGluZ3MiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInNlbnNlIHRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwgdGhpbmdzIiwKICAgICAgICAgICBkZXB0aCA9ICJzZW5zZSB3aGV0aGVyIHNvbWV0aGluZyBpcyBjbG9zZSBieSBvciBmYXIgYXdheSIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gImRvIG1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gImhhdmUgdGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGluZ3MiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIHRoaW5ncyIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJoYXZlIGJlbGllZnMsIGxpa2Ugd2hlbiB5b3UgdGhpbmsgc29tZXRoaW5nIGlzIHRydWUiLAogICAgICAgICAgIGh1bmdyeSA9ICJnZXQgaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJmZWVsIHRpcmVkIiwKICAgICAgICAgICBwYWluID0gImZlZWwgcGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gImZlZWwgc2ljaywgbGlrZSB3aGVuIHlvdSBmZWVsIGxpa2UgeW91IG1pZ2h0IHRocm93IHVwIiwKICAgICAgICAgICBzYWZlID0gImZlZWwgc2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJmZWVsIGxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIHdpdGggc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZmVlbCBndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJnZXQgaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSB3aGF0IHRvIGRvIiwKICAgICAgICAgICBjaG9pY2VzID0gIm1ha2UgY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAiaGF2ZSBzZWxmLWNvbnRyb2wsIGxpa2Ugd2hlbiB5b3Ugc3RvcCB5b3Vyc2VsZiBmcm9tIGRvaW5nIHNvbWV0aGluZyB5b3Ugc2hvdWxkbid0IGRvIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gIm1ha2UgcGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiaGF2ZSBnb2FscywgbGlrZSB3aGVuIHlvdSdyZSB3b3JraW5nIGhhcmQgdG8gZG8gc29tZXRoaW5nIG9yIG1ha2Ugc29tZXRoaW5nIGhhcHBlbiIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImJlIGF3YXJlIG9mIHRoaW5ncyIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJiZSBhd2FyZSBvZiBpdHNlbGYiLAogICAgICAgICAgIGRlc2lyZXMgPSAiaGF2ZSBkZXNpcmVzLCBsaWtlIHdoZW4geW91IHJlYWxseSB3YW50IHNvbWV0aGluZyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZmVlbCBlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gInVuZGVyc3RhbmQgaG93IHNvbWVib2R5IGVsc2UgaXMgZmVlbGluZyIsCiAgICAgICAgICAgam95ID0gImZlZWwgam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJrbm93IHdoYXQncyBuaWNlIGFuZCB3aGF0J3MgbWVhbiIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAiaGF2ZSBhIHBlcnNvbmFsaXR5LCBsaWtlIHdoZW4gc29tZW9uZSBpcyBzaHkgYW5kIHNvbWVib2R5IGVsc2UgaXMgc2lsbHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gImZlZWwgcGxlYXN1cmUsIGxpa2Ugd2hlbiBzb21ldGhpbmcgZmVlbHMgcmVhbGx5IGdvb2QiLAogICAgICAgICAgIHByb3VkID0gImZlZWwgcHJvdWQiKSkpICU+JQogICAgbXV0YXRlKHNob3J0ID0gZmFjdG9yKAogICAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICAgIGhhcHB5ID0gImhhcHB5IiwKICAgICAgICAgICAgIGRlcHJlc3NlZCA9ICJzYWQiLAogICAgICAgICAgIGZlYXIgPSAic2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAidGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCIsCiAgICAgICAgICAgZGVwdGggPSAiZGVwdGgiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJ0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIiwKICAgICAgICAgICBiZWxpZWZzID0gImJlbGllZnMiLAogICAgICAgICAgIGh1bmdyeSA9ICJodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gInRpcmVkIiwKICAgICAgICAgICBwYWluID0gInBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJzaWNrIiwKICAgICAgICAgICBzYWZlID0gInNhZmUiLAogICAgICAgICAgIGxvdmUgPSAibG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIiwKICAgICAgICAgICBndWlsdCA9ICJndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIiwKICAgICAgICAgICBjaG9pY2VzID0gImNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gInNlbGYtY29udHJvbCIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJwbGFucyIsCiAgICAgICAgICAgZ29hbCA9ICJnb2FscyIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImF3YXJlIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gInNlbGYtYXdhcmUiLAogICAgICAgICAgIGRlc2lyZXMgPSAiZGVzaXJlcyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJlbXBhdGh5IiwKICAgICAgICAgICBqb3kgPSAiam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJtb3JhbGl0eSIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAicGVyc29uYWxpdHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gInBsZWFzdXJlIiwKICAgICAgICAgICBwcm91ZCA9ICJwcm91ZCIpKSkKCiMgbWFrZSBkYXRhZnJhbWUgZm9yIHBsb3R0aW5nCnNjYXR0ZXJfcGxvdHRpbmcgPC0gbG9hZGluZ3MoZWZhX2QxX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgcmVuYW1lKEJPRFkgPSBNUjEsCiAgICAgICAgIEhFQVJUID0gTVIyLAogICAgICAgICBNSU5EID0gTVIzKSAlPiUKICBmdWxsX2pvaW4od29yZGluZ19zMSkgJT4lCiAgbXV0YXRlKGRvbWluYW50ID0gZmFjdG9yKAogICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgIkJPRFkiLAogICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoSEVBUlQpLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCAiTUlORCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSksCiAgICBzaXplID0gaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgYWJzKEJPRFkpLAogICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgYWJzKEhFQVJUKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksIGFicyhNSU5EKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgIGNvbG9yID0gaWZlbHNlKGRvbWluYW50ID09ICJCT0RZIiwgIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJIRUFSVCIsICIjMzc3RUI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZG9taW5hbnQgPT0gIk1JTkQiLCAiIzREQUY0QSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKQoKIyBwbG90IQpmaWdTMSA8LSBwbG90X2x5KHNjYXR0ZXJfcGxvdHRpbmcsIHggPSB+SEVBUlQsIHkgPSB+Qk9EWSwgeiA9IH5NSU5ELAogICAgICAgICAgICAgdHlwZSA9ICJzY2F0dGVyM2QiLAogICAgICAgICAgICAgY29sb3IgPSB+ZG9taW5hbnQsIGNvbG9ycyA9IGMoIiMzNzdFQjgiLCAiIzREQUY0QSIsICIjRTQxQTFDIiksCiAgICAgICAgICAgICBtYXJrZXIgPSBsaXN0KHNpemUgPSA0KSwKICAgICAgICAgICAgIHRleHQgPSB+c2hvcnQsCiAgICAgICAgICAgICB0ZXh0Zm9udCA9IGxpc3Qoc2l6ZSA9IDE1KSwKICAgICAgICAgICAgIG1vZGUgPSAidGV4dCttYXJrZXJzIiwKICAgICAgICAgICAgIHNob3dsZWdlbmQgPSBUUlVFKQoKZmlnUzEKYGBgCgojIyMgU3R1ZHkgMiAoNy05eW8pCgpgYGB7ciBmaWd1cmUgM2Qgc2NhdHRlciBzMn0KIyBzZXQgdXAgbGFiZWxzIGZvciBwbG90IChzaG9ydGVuZWQgdmVyc2lvbiBvZiBtZW50YWwgY2FwYWNpdHkgaXRlbXMpCndvcmRpbmdfczIgPC0gbG9hZGluZ3MoZWZhX2QyX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgc2VsZWN0KGl0ZW0pICU+JQogIG11dGF0ZSh3b3JkaW5nID0gZmFjdG9yKAogICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgaGFwcHkgPSAiZmVlbCBoYXBweSIsCiAgICAgICAgICAgZGVwcmVzc2VkID0gImZlZWwgc2FkIiwKICAgICAgICAgICBmZWFyID0gImZlZWwgc2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJnZXQgYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiZmVlbCBjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciBzb3VuZHMiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUgdGhpbmdzIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJzZW5zZSB0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIHRoaW5ncyIsCiAgICAgICAgICAgZGVwdGggPSAic2Vuc2Ugd2hldGhlciBzb21ldGhpbmcgaXMgY2xvc2UgYnkgb3IgZmFyIGF3YXkiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJkbyBtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJoYXZlIHRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCBob3cgdG8gZG8gdGhpbmdzIiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciB0aGluZ3MiLAogICAgICAgICAgIGJlbGllZnMgPSAiaGF2ZSBiZWxpZWZzLCBsaWtlIHdoZW4geW91IHRoaW5rIHNvbWV0aGluZyBpcyB0cnVlIiwKICAgICAgICAgICBodW5ncnkgPSAiZ2V0IGh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAiZmVlbCB0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJmZWVsIHBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJmZWVsIHNpY2ssIGxpa2Ugd2hlbiB5b3UgZmVlbCBsaWtlIHlvdSBtaWdodCB0aHJvdyB1cCIsCiAgICAgICAgICAgc2FmZSA9ICJmZWVsIHNhZmUiLAogICAgICAgICAgIGxvdmUgPSAiZmVlbCBsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUgc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSB3aXRoIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGd1aWx0ID0gImZlZWwgZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiZ2V0IGh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUgd2hhdCB0byBkbyIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJtYWtlIGNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gImhhdmUgc2VsZi1jb250cm9sLCBsaWtlIHdoZW4geW91IHN0b3AgeW91cnNlbGYgZnJvbSBkb2luZyBzb21ldGhpbmcgeW91IHNob3VsZG4ndCBkbyIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJtYWtlIHBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImhhdmUgZ29hbHMsIGxpa2Ugd2hlbiB5b3UncmUgd29ya2luZyBoYXJkIHRvIGRvIHNvbWV0aGluZyBvciBtYWtlIHNvbWV0aGluZyBoYXBwZW4iLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJiZSBhd2FyZSBvZiB0aGluZ3MiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAiYmUgYXdhcmUgb2YgaXRzZWxmIiwKICAgICAgICAgICBkZXNpcmVzID0gImhhdmUgZGVzaXJlcywgbGlrZSB3aGVuIHlvdSByZWFsbHkgd2FudCBzb21ldGhpbmciLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImZlZWwgZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJ1bmRlcnN0YW5kIGhvdyBzb21lYm9keSBlbHNlIGlzIGZlZWxpbmciLAogICAgICAgICAgIGpveSA9ICJmZWVsIGpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAia25vdyB3aGF0J3MgbmljZSBhbmQgd2hhdCdzIG1lYW4iLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gImhhdmUgYSBwZXJzb25hbGl0eSwgbGlrZSB3aGVuIHNvbWVvbmUgaXMgc2h5IGFuZCBzb21lYm9keSBlbHNlIGlzIHNpbGx5IiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJmZWVsIHBsZWFzdXJlLCBsaWtlIHdoZW4gc29tZXRoaW5nIGZlZWxzIHJlYWxseSBnb29kIiwKICAgICAgICAgICBwcm91ZCA9ICJmZWVsIHByb3VkIikpKSAlPiUKICAgIG11dGF0ZShzaG9ydCA9IGZhY3RvcigKICAgICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgICBoYXBweSA9ICJoYXBweSIsCiAgICAgICAgICAgICBkZXByZXNzZWQgPSAic2FkIiwKICAgICAgICAgICBmZWFyID0gInNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwiLAogICAgICAgICAgIGRlcHRoID0gImRlcHRoIiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAibWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAidGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJiZWxpZWZzIiwKICAgICAgICAgICBodW5ncnkgPSAiaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJ0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJwYWluIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAic2ljayIsCiAgICAgICAgICAgc2FmZSA9ICJzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJzZWxmLWNvbnRyb2wiLAogICAgICAgICAgIGludGVudGlvbnMgPSAicGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiZ29hbHMiLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJhd2FyZSIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJzZWxmLWF3YXJlIiwKICAgICAgICAgICBkZXNpcmVzID0gImRlc2lyZXMiLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAiZW1wYXRoeSIsCiAgICAgICAgICAgam95ID0gImpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAibW9yYWxpdHkiLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gInBlcnNvbmFsaXR5IiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJwbGVhc3VyZSIsCiAgICAgICAgICAgcHJvdWQgPSAicHJvdWQiKSkpCgojIG1ha2UgZGF0YWZyYW1lIGZvciBwbG90dGluZwpzY2F0dGVyX3Bsb3R0aW5nIDwtIGxvYWRpbmdzKGVmYV9kMl9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIHJlbmFtZShCT0RZID0gTVIxLAogICAgICAgICBIRUFSVCA9IE1SMiwKICAgICAgICAgTUlORCA9IE1SMykgJT4lCiAgZnVsbF9qb2luKHdvcmRpbmdfczIpICU+JQogIG11dGF0ZShkb21pbmFudCA9IGZhY3RvcigKICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksICJCT0RZIiwKICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgIkhFQVJUIiwKICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpLAogICAgc2l6ZSA9IGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksIGFicyhCT0RZKSwKICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksIGFicyhIRUFSVCksCiAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCBhYnMoTUlORCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICBjb2xvciA9IGlmZWxzZShkb21pbmFudCA9PSAiQk9EWSIsICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiSEVBUlQiLCAiIzREQUY0QSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJNSU5EIiwgIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkKCiMgcGxvdCEKZmlnUzIgPC0gcGxvdF9seShzY2F0dGVyX3Bsb3R0aW5nLCB4ID0gfkhFQVJULCB5ID0gfkJPRFksIHogPSB+TUlORCwKICAgICAgICAgICAgIHR5cGUgPSAic2NhdHRlcjNkIiwKICAgICAgICAgICAgIGNvbG9yID0gfmRvbWluYW50LCBjb2xvcnMgPSBjKCIjMzc3RUI4IiwgIiM0REFGNEEiLCAiI0U0MUExQyIpLAogICAgICAgICAgICAgbWFya2VyID0gbGlzdChzaXplID0gNCksCiAgICAgICAgICAgICB0ZXh0ID0gfnNob3J0LAogICAgICAgICAgICAgdGV4dGZvbnQgPSBsaXN0KHNpemUgPSAxNSksCiAgICAgICAgICAgICBtb2RlID0gInRleHQrbWFya2VycyIsCiAgICAgICAgICAgICBzaG93bGVnZW5kID0gVFJVRSkKCmZpZ1MyCmBgYAoKIyMjIFN0dWR5IDMgKDctOXlvKQoKYGBge3IgZmlndXJlIDNkIHNjYXR0ZXIgczN9CiMgc2V0IHVwIGxhYmVscyBmb3IgcGxvdCAoc2hvcnRlbmVkIHZlcnNpb24gb2YgbWVudGFsIGNhcGFjaXR5IGl0ZW1zKQp3b3JkaW5nX3MzIDwtIGxvYWRpbmdzKGVmYV9kM19hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIHNlbGVjdChpdGVtKSAlPiUKICBtdXRhdGUod29yZGluZyA9IGZhY3RvcigKICAgIHJlY29kZShpdGVtLAogICAgICAgICAgIGhhcHB5ID0gImZlZWwgaGFwcHkiLAogICAgICAgICAgIGRlcHJlc3NlZCA9ICJmZWVsIHNhZCIsCiAgICAgICAgICAgZmVhciA9ICJmZWVsIHNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiZ2V0IGFuZ3J5IiwKICAgICAgICAgICBjYWxtID0gImZlZWwgY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIgc291bmRzIiwKICAgICAgICAgICBzZWVpbmcgPSAic2VlIHRoaW5ncyIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAic2Vuc2UgdGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCB0aGluZ3MiLAogICAgICAgICAgIGRlcHRoID0gInNlbnNlIHdoZXRoZXIgc29tZXRoaW5nIGlzIGNsb3NlIGJ5IG9yIGZhciBhd2F5IiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAiZG8gbWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAiaGF2ZSB0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQgaG93IHRvIGRvIHRoaW5ncyIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXIgdGhpbmdzIiwKICAgICAgICAgICBiZWxpZWZzID0gImhhdmUgYmVsaWVmcywgbGlrZSB3aGVuIHlvdSB0aGluayBzb21ldGhpbmcgaXMgdHJ1ZSIsCiAgICAgICAgICAgaHVuZ3J5ID0gImdldCBodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gImZlZWwgdGlyZWQiLAogICAgICAgICAgIHBhaW4gPSAiZmVlbCBwYWluIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAiZmVlbCBzaWNrLCBsaWtlIHdoZW4geW91IGZlZWwgbGlrZSB5b3UgbWlnaHQgdGhyb3cgdXAiLAogICAgICAgICAgIHNhZmUgPSAiZmVlbCBzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImZlZWwgbG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGUgd2l0aCBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBndWlsdCA9ICJmZWVsIGd1aWx0eSIsCiAgICAgICAgICAgZGlzcmVzcGVjdGVkID0gImdldCBodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIHdoYXQgdG8gZG8iLAogICAgICAgICAgIGNob2ljZXMgPSAibWFrZSBjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJoYXZlIHNlbGYtY29udHJvbCwgbGlrZSB3aGVuIHlvdSBzdG9wIHlvdXJzZWxmIGZyb20gZG9pbmcgc29tZXRoaW5nIHlvdSBzaG91bGRuJ3QgZG8iLAogICAgICAgICAgIGludGVudGlvbnMgPSAibWFrZSBwbGFucyIsCiAgICAgICAgICAgZ29hbCA9ICJoYXZlIGdvYWxzLCBsaWtlIHdoZW4geW91J3JlIHdvcmtpbmcgaGFyZCB0byBkbyBzb21ldGhpbmcgb3IgbWFrZSBzb21ldGhpbmcgaGFwcGVuIiwKICAgICAgICAgICBjb25zY2lvdXMgPSAiYmUgYXdhcmUgb2YgdGhpbmdzIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gImJlIGF3YXJlIG9mIGl0c2VsZiIsCiAgICAgICAgICAgZGVzaXJlcyA9ICJoYXZlIGRlc2lyZXMsIGxpa2Ugd2hlbiB5b3UgcmVhbGx5IHdhbnQgc29tZXRoaW5nIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJmZWVsIGVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAidW5kZXJzdGFuZCBob3cgc29tZWJvZHkgZWxzZSBpcyBmZWVsaW5nIiwKICAgICAgICAgICBqb3kgPSAiZmVlbCBqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gImtub3cgd2hhdCdzIG5pY2UgYW5kIHdoYXQncyBtZWFuIiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJoYXZlIGEgcGVyc29uYWxpdHksIGxpa2Ugd2hlbiBzb21lb25lIGlzIHNoeSBhbmQgc29tZWJvZHkgZWxzZSBpcyBzaWxseSIsCiAgICAgICAgICAgcGxlYXN1cmUgPSAiZmVlbCBwbGVhc3VyZSwgbGlrZSB3aGVuIHNvbWV0aGluZyBmZWVscyByZWFsbHkgZ29vZCIsCiAgICAgICAgICAgcHJvdWQgPSAiZmVlbCBwcm91ZCIpKSkgJT4lCiAgICBtdXRhdGUoc2hvcnQgPSBmYWN0b3IoCiAgICAgIHJlY29kZShpdGVtLAogICAgICAgICAgICAgaGFwcHkgPSAiaGFwcHkiLAogICAgICAgICAgICAgZGVwcmVzc2VkID0gInNhZCIsCiAgICAgICAgICAgZmVhciA9ICJzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImFuZ3J5IiwKICAgICAgICAgICBjYWxtID0gImNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIiwKICAgICAgICAgICBzZWVpbmcgPSAic2VlIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJ0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIiwKICAgICAgICAgICBkZXB0aCA9ICJkZXB0aCIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gIm1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gInRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXIiLAogICAgICAgICAgIGJlbGllZnMgPSAiYmVsaWVmcyIsCiAgICAgICAgICAgaHVuZ3J5ID0gImh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAidGlyZWQiLAogICAgICAgICAgIHBhaW4gPSAicGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gInNpY2siLAogICAgICAgICAgIHNhZmUgPSAic2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUiLAogICAgICAgICAgIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGUiLAogICAgICAgICAgIGd1aWx0ID0gImd1aWx0eSIsCiAgICAgICAgICAgZGlzcmVzcGVjdGVkID0gImh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUiLAogICAgICAgICAgIGNob2ljZXMgPSAiY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAic2VsZi1jb250cm9sIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gInBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImdvYWxzIiwKICAgICAgICAgICBjb25zY2lvdXMgPSAiYXdhcmUiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAic2VsZi1hd2FyZSIsCiAgICAgICAgICAgZGVzaXJlcyA9ICJkZXNpcmVzIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gImVtcGF0aHkiLAogICAgICAgICAgIGpveSA9ICJqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gIm1vcmFsaXR5IiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJwZXJzb25hbGl0eSIsCiAgICAgICAgICAgcGxlYXN1cmUgPSAicGxlYXN1cmUiLAogICAgICAgICAgIHByb3VkID0gInByb3VkIikpKQoKIyBtYWtlIGRhdGFmcmFtZSBmb3IgcGxvdHRpbmcKc2NhdHRlcl9wbG90dGluZyA8LSBsb2FkaW5ncyhlZmFfZDNfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICByZW5hbWUoQk9EWSA9IE1SMSwKICAgICAgICAgSEVBUlQgPSBNUjIsCiAgICAgICAgIE1JTkQgPSBNUjMpICU+JQogIGZ1bGxfam9pbih3b3JkaW5nX3MzKSAlPiUKICBtdXRhdGUoZG9taW5hbnQgPSBmYWN0b3IoCiAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEJPRFkpLCAiQk9EWSIsCiAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKSwKICAgIHNpemUgPSBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEJPRFkpLCBhYnMoQk9EWSksCiAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoSEVBUlQpLCBhYnMoSEVBUlQpLAogICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgYWJzKE1JTkQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpLAogICAgY29sb3IgPSBpZmVsc2UoZG9taW5hbnQgPT0gIkJPRFkiLCAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICBpZmVsc2UoZG9taW5hbnQgPT0gIkhFQVJUIiwgIiM0REFGNEEiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiTUlORCIsICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpCgojIHBsb3QhCmZpZ3MzIDwtIHBsb3RfbHkoc2NhdHRlcl9wbG90dGluZywgeCA9IH5IRUFSVCwgeSA9IH5CT0RZLCB6ID0gfk1JTkQsCiAgICAgICAgICAgICB0eXBlID0gInNjYXR0ZXIzZCIsCiAgICAgICAgICAgICBjb2xvciA9IH5kb21pbmFudCwgY29sb3JzID0gYygiIzM3N0VCOCIsICIjNERBRjRBIiwgIiNFNDFBMUMiKSwKICAgICAgICAgICAgIG1hcmtlciA9IGxpc3Qoc2l6ZSA9IDQpLAogICAgICAgICAgICAgdGV4dCA9IH5zaG9ydCwKICAgICAgICAgICAgIHRleHRmb250ID0gbGlzdChzaXplID0gMTUpLAogICAgICAgICAgICAgbW9kZSA9ICJ0ZXh0K21hcmtlcnMiLAogICAgICAgICAgICAgc2hvd2xlZ2VuZCA9IFRSVUUpCgpmaWdzMwpgYGAKCiMjIyBTdHVkeSA0ICg0LTZ5bykKCmBgYHtyIGZpZ3VyZSAzZCBzY2F0dGVyIHM0fQojIHNldCB1cCBsYWJlbHMgZm9yIHBsb3QgKHNob3J0ZW5lZCB2ZXJzaW9uIG9mIG1lbnRhbCBjYXBhY2l0eSBpdGVtcykKd29yZGluZ19zNCA8LSBsb2FkaW5ncyhlZmFfZDRfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBzZWxlY3QoaXRlbSkgJT4lCiAgbXV0YXRlKHdvcmRpbmcgPSBmYWN0b3IoCiAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICBoYXBweSA9ICJmZWVsIGhhcHB5IiwKICAgICAgICAgICBkZXByZXNzZWQgPSAiZmVlbCBzYWQiLAogICAgICAgICAgIGZlYXIgPSAiZmVlbCBzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImdldCBhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJmZWVsIGNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIHNvdW5kcyIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSB0aGluZ3MiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInNlbnNlIHRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwgdGhpbmdzIiwKICAgICAgICAgICBkZXB0aCA9ICJzZW5zZSB3aGV0aGVyIHNvbWV0aGluZyBpcyBjbG9zZSBieSBvciBmYXIgYXdheSIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gImRvIG1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gImhhdmUgdGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGluZ3MiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIHRoaW5ncyIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJoYXZlIGJlbGllZnMsIGxpa2Ugd2hlbiB5b3UgdGhpbmsgc29tZXRoaW5nIGlzIHRydWUiLAogICAgICAgICAgIGh1bmdyeSA9ICJnZXQgaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJmZWVsIHRpcmVkIiwKICAgICAgICAgICBwYWluID0gImZlZWwgcGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gImZlZWwgc2ljaywgbGlrZSB3aGVuIHlvdSBmZWVsIGxpa2UgeW91IG1pZ2h0IHRocm93IHVwIiwKICAgICAgICAgICBzYWZlID0gImZlZWwgc2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJmZWVsIGxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIHdpdGggc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZmVlbCBndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJnZXQgaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSB3aGF0IHRvIGRvIiwKICAgICAgICAgICBjaG9pY2VzID0gIm1ha2UgY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAiaGF2ZSBzZWxmLWNvbnRyb2wsIGxpa2Ugd2hlbiB5b3Ugc3RvcCB5b3Vyc2VsZiBmcm9tIGRvaW5nIHNvbWV0aGluZyB5b3Ugc2hvdWxkbid0IGRvIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gIm1ha2UgcGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiaGF2ZSBnb2FscywgbGlrZSB3aGVuIHlvdSdyZSB3b3JraW5nIGhhcmQgdG8gZG8gc29tZXRoaW5nIG9yIG1ha2Ugc29tZXRoaW5nIGhhcHBlbiIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImJlIGF3YXJlIG9mIHRoaW5ncyIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJiZSBhd2FyZSBvZiBpdHNlbGYiLAogICAgICAgICAgIGRlc2lyZXMgPSAiaGF2ZSBkZXNpcmVzLCBsaWtlIHdoZW4geW91IHJlYWxseSB3YW50IHNvbWV0aGluZyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZmVlbCBlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gInVuZGVyc3RhbmQgaG93IHNvbWVib2R5IGVsc2UgaXMgZmVlbGluZyIsCiAgICAgICAgICAgam95ID0gImZlZWwgam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJrbm93IHdoYXQncyBuaWNlIGFuZCB3aGF0J3MgbWVhbiIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAiaGF2ZSBhIHBlcnNvbmFsaXR5LCBsaWtlIHdoZW4gc29tZW9uZSBpcyBzaHkgYW5kIHNvbWVib2R5IGVsc2UgaXMgc2lsbHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gImZlZWwgcGxlYXN1cmUsIGxpa2Ugd2hlbiBzb21ldGhpbmcgZmVlbHMgcmVhbGx5IGdvb2QiLAogICAgICAgICAgIHByb3VkID0gImZlZWwgcHJvdWQiKSkpICU+JQogICAgbXV0YXRlKHNob3J0ID0gZmFjdG9yKAogICAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICAgIGhhcHB5ID0gImhhcHB5IiwKICAgICAgICAgICAgIGRlcHJlc3NlZCA9ICJzYWQiLAogICAgICAgICAgIGZlYXIgPSAic2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAidGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCIsCiAgICAgICAgICAgZGVwdGggPSAiZGVwdGgiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJ0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIiwKICAgICAgICAgICBiZWxpZWZzID0gImJlbGllZnMiLAogICAgICAgICAgIGh1bmdyeSA9ICJodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gInRpcmVkIiwKICAgICAgICAgICBwYWluID0gInBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJzaWNrIiwKICAgICAgICAgICBzYWZlID0gInNhZmUiLAogICAgICAgICAgIGxvdmUgPSAibG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIiwKICAgICAgICAgICBndWlsdCA9ICJndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIiwKICAgICAgICAgICBjaG9pY2VzID0gImNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gInNlbGYtY29udHJvbCIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJwbGFucyIsCiAgICAgICAgICAgZ29hbCA9ICJnb2FscyIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImF3YXJlIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gInNlbGYtYXdhcmUiLAogICAgICAgICAgIGRlc2lyZXMgPSAiZGVzaXJlcyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJlbXBhdGh5IiwKICAgICAgICAgICBqb3kgPSAiam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJtb3JhbGl0eSIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAicGVyc29uYWxpdHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gInBsZWFzdXJlIiwKICAgICAgICAgICBwcm91ZCA9ICJwcm91ZCIpKSkKCiMgIyBtYWtlIGRhdGFmcmFtZSBmb3IgcGxvdHRpbmcKIyBzY2F0dGVyX3Bsb3R0aW5nIDwtIGxvYWRpbmdzKGVmYV9kNF9hbGxfcm90YXRlZE4pW10gJT4lCiMgICBkYXRhLmZyYW1lKCkgJT4lCiMgICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKIyAgIHJlbmFtZShCT0RZID0gTVIxLAojICAgICAgICAgIEhFQVJUID0gTVIyLAojICAgICAgICAgIE1JTkQgPSBNUjMpICU+JQojICAgZnVsbF9qb2luKHdvcmRpbmdfczQpICU+JQojICAgbXV0YXRlKGRvbWluYW50ID0gZmFjdG9yKAojICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEJPRFkpLCAiQk9EWSIsCiMgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgIkhFQVJUIiwKIyAgICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCAiTUlORCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKSwKIyAgICAgc2l6ZSA9IGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksIGFicyhCT0RZKSwKIyAgICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgYWJzKEhFQVJUKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgYWJzKE1JTkQpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiMgICAgIGNvbG9yID0gaWZlbHNlKGRvbWluYW50ID09ICJCT0RZIiwgIiNFNDFBMUMiLAojICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZG9taW5hbnQgPT0gIkhFQVJUIiwgIiM0REFGNEEiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJNSU5EIiwgIiNFNDFBMUMiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKQojIAojICMgcGxvdCEKIyBmaWdzNCA8LSBwbG90X2x5KHNjYXR0ZXJfcGxvdHRpbmcsIHggPSB+SEVBUlQsIHkgPSB+Qk9EWSwgeiA9IH5NSU5ELAojICAgICAgICAgICAgICB0eXBlID0gInNjYXR0ZXIzZCIsCiMgICAgICAgICAgICAgIGNvbG9yID0gfmRvbWluYW50LCBjb2xvcnMgPSBjKCIjMzc3RUI4IiwgIiM0REFGNEEiLCAiI0U0MUExQyIpLAojICAgICAgICAgICAgICBtYXJrZXIgPSBsaXN0KHNpemUgPSA0KSwKIyAgICAgICAgICAgICAgdGV4dCA9IH5zaG9ydCwKIyAgICAgICAgICAgICAgdGV4dGZvbnQgPSBsaXN0KHNpemUgPSAxNSksCiMgICAgICAgICAgICAgIG1vZGUgPSAidGV4dCttYXJrZXJzIiwKIyAgICAgICAgICAgICAgc2hvd2xlZ2VuZCA9IFRSVUUpCiMgCiMgZmlnczQKYGBgCgojIyBIZWF0bWFwcwoKKk5PVEU6IHNldCB0byAzIGZhY3RvcnMgbWFudWFsbHksIGZvciBub3cuKgoKIyMjIFN0dWR5IDEgKGFkdWx0cykKCmBgYHtyIGZpZ3VyZSBoZWF0bWFwIHMxLCBmaWcud2lkdGggPSA3LCBmaWcuaGVpZ2h0ID0gN30KZmFjdG9yc19zMSA8LSBmYS5zb3J0KGZhKGQxX2FsbCwgbmZhY3RvcnMgPSAzLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlKSRsb2FkaW5nc1tdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgZnVsbF9qb2luKHdvcmRpbmdfczEpICU+JQogIHNlbGVjdCh3b3JkaW5nLCBNUjEsIE1SMiwgTVIzKSAlPiUKICByZW5hbWUoY2FwYWNpdHkgPSB3b3JkaW5nLCBGYWN0b3IxID0gTVIxLCBGYWN0b3IyID0gTVIyLCBGYWN0b3IzID0gTVIzKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIm9yZGVyIikgJT4lCiAgbXV0YXRlKG9yZGVyID0gYXMubnVtZXJpYyhvcmRlcikpCgpmYWN0b3JzX3MxX2xvbmcgPC0gZmFjdG9yc19zMSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHksIC1vcmRlcikgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvcikpKSAlPiUKICAjIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpLAogICMgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJGMSIsICJGMyIsICJGMiIpKSkgJT4lCiAgIyBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjIiLCAiRjEiLCAiRjMiKSkpICU+JQogIGFycmFuZ2Uob3JkZXIsIGZhY3RvcikKCmZhY3RvcnNfczFfYmxhbmsxIDwtIGZhY3RvcnNfczFfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MxX2xvbmckbG9hZGluZykpKQojIGZhY3RvcnNfczFfYmxhbmsyIDwtIGZhY3RvcnNfczFfbG9uZyAlPiUKIyAgIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjEiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMV9sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3MxX2JsYW5rMiA8LSBmYWN0b3JzX3MxX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yID09ICJGMiIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MxX2xvbmckbG9hZGluZykqMi8zKSkpCmZhY3RvcnNfczFfYmxhbmszIDwtIGZhY3RvcnNfczFfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgIT0gIkYzIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczFfbG9uZyRsb2FkaW5nKSoxLzMpKSkKCiMgZ2dwbG90KGZhY3RvcnNfczFfYmxhbmsxLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKIyAKIyBnZ3Bsb3QoZmFjdG9yc19zMV9ibGFuazIsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczFfYmxhbmszLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAoKZ2dwbG90KGZhY3RvcnNfczFfbG9uZywgYWVzKHggPSBmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gNikgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAogICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDAuNTEsIHhtYXggPSAxLjQ5LCB5bWluID0gMTQuNTUsIHltYXggPSAyMC40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMS41MSwgeG1heCA9IDIuNDksIHltaW4gPSA2LjU1LCB5bWF4ID0gMTQuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDIuNTEsIHhtYXggPSAzLjQ5LCB5bWluID0gMC41NSwgeW1heCA9IDYuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIHRoZW1lX2J3KCkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMApgYGAKCiMjIyBTdHVkeSAyICg3LTl5KQoKYGBge3IgZmlndXJlIGhlYXRtYXAgczIsIGZpZy53aWR0aCA9IDcsIGZpZy5oZWlnaHQgPSA3fQpmYWN0b3JzX3MyIDwtIGZhLnNvcnQoZmEoZDJfYWxsLCBuZmFjdG9ycyA9IDMsIGNvciA9IGNob3NlbkNvclR5cGUsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUpJGxvYWRpbmdzW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBmdWxsX2pvaW4od29yZGluZ19zMikgJT4lCiAgc2VsZWN0KHdvcmRpbmcsIE1SMSwgTVIyLCBNUjMpICU+JQogIHJlbmFtZShjYXBhY2l0eSA9IHdvcmRpbmcsIEZhY3RvcjEgPSBNUjEsIEZhY3RvcjIgPSBNUjIsIEZhY3RvcjMgPSBNUjMpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAib3JkZXIiKSAlPiUKICBtdXRhdGUob3JkZXIgPSBhcy5udW1lcmljKG9yZGVyKSkKCmZhY3RvcnNfczJfbG9uZyA8LSBmYWN0b3JzX3MyICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSwgLW9yZGVyKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYxIiwgIkYzIiwgIkYyIikpKSAlPiUKICAjIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpLAogICMgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJGMiIsICJGMSIsICJGMyIpKSkgJT4lCiAgYXJyYW5nZShvcmRlciwgZmFjdG9yKQoKZmFjdG9yc19zMl9ibGFuazEgPC0gZmFjdG9yc19zMl9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczJfbG9uZyRsb2FkaW5nKSkpCmZhY3RvcnNfczJfYmxhbmsyIDwtIGZhY3RvcnNfczJfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgPT0gIkYxIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczJfbG9uZyRsb2FkaW5nKSoyLzMpKSkKIyBmYWN0b3JzX3MyX2JsYW5rMiA8LSBmYWN0b3JzX3MyX2xvbmcgJT4lCiMgICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgPT0gIkYyIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczJfbG9uZyRsb2FkaW5nKSoyLzMpKSkKZmFjdG9yc19zMl9ibGFuazMgPC0gZmFjdG9yc19zMl9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciAhPSAiRjMiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMl9sb25nJGxvYWRpbmcpKjEvMykpKQoKIyBnZ3Bsb3QoZmFjdG9yc19zMl9ibGFuazEsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3MyX2JsYW5rMiwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKIyAKIyBnZ3Bsb3QoZmFjdG9yc19zMl9ibGFuazMsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCgpnZ3Bsb3QoZmFjdG9yc19zMl9sb25nLCBhZXMoeCA9IGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSksIHNpemUgPSA2KSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwogIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMC41MSwgeG1heCA9IDEuNDksIHltaW4gPSAxNC41NSwgeW1heCA9IDIwLjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAxLjUxLCB4bWF4ID0gMi40OSwgeW1pbiA9IDYuNTUsIHltYXggPSAxNC40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMi41MSwgeG1heCA9IDMuNDksIHltaW4gPSAwLjU1LCB5bWF4ID0gNi40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgdGhlbWVfYncoKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCmBgYAoKIyMjIFN0dWR5IDMgKDctOXkpCgpgYGB7ciBmaWd1cmUgaGVhdG1hcCBzMywgZmlnLndpZHRoID0gNSwgZmlnLmhlaWdodCA9IDd9CmZhY3RvcnNfczMgPC0gZmEuc29ydChmYShkM19hbGwsIG5mYWN0b3JzID0gMywgY29yID0gY2hvc2VuQ29yVHlwZSwgcm90YXRlID0gY2hvc2VuUm90VHlwZSkkbG9hZGluZ3NbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIGxlZnRfam9pbih3b3JkaW5nX3MzKSAlPiUKICBzZWxlY3Qod29yZGluZywgTVIxLCBNUjIsIE1SMykgJT4lCiAgcmVuYW1lKGNhcGFjaXR5ID0gd29yZGluZywgRmFjdG9yMSA9IE1SMSwgRmFjdG9yMiA9IE1SMiwgRmFjdG9yMyA9IE1SMykgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJvcmRlciIpICU+JQogIG11dGF0ZShvcmRlciA9IGFzLm51bWVyaWMob3JkZXIpKQoKZmFjdG9yc19zM19sb25nIDwtIGZhY3RvcnNfczMgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5LCAtb3JkZXIpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpKSkgJT4lCiAgIyBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAjICMgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJGMSIsICJGMyIsICJGMiIpKSkgJT4lCiAgIyBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjIiLCAiRjEiLCAiRjMiKSkpICU+JQogIGFycmFuZ2Uob3JkZXIsIGZhY3RvcikKCmZhY3RvcnNfczNfYmxhbmsxIDwtIGZhY3RvcnNfczNfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MzX2xvbmckbG9hZGluZykpKQojIGZhY3RvcnNfczNfYmxhbmsyIDwtIGZhY3RvcnNfczNfbG9uZyAlPiUKIyAgIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjEiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zM19sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3MzX2JsYW5rMiA8LSBmYWN0b3JzX3MzX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yID09ICJGMiIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MzX2xvbmckbG9hZGluZykqMi8zKSkpCmZhY3RvcnNfczNfYmxhbmszIDwtIGZhY3RvcnNfczNfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgIT0gIkYzIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczNfbG9uZyRsb2FkaW5nKSoxLzMpKSkKCiMgZ2dwbG90KGZhY3RvcnNfczNfYmxhbmsxLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKIyAKIyBnZ3Bsb3QoZmFjdG9yc19zM19ibGFuazIsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczNfYmxhbmszLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAoKZ2dwbG90KGZhY3RvcnNfczNfbG9uZywgYWVzKHggPSBmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gNikgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAogICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDAuNTEsIHhtYXggPSAxLjQ5LCB5bWluID0gMTQuNTUsIHltYXggPSAyMC40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMS41MSwgeG1heCA9IDIuNDksIHltaW4gPSA2LjU1LCB5bWF4ID0gMTQuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDIuNTEsIHhtYXggPSAzLjQ5LCB5bWluID0gMC41NSwgeW1heCA9IDYuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIHRoZW1lX2J3KCkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMApgYGAKCiMjIyBTdHVkeSA0ICg0LTZ5KQooMyBmYWN0b3JzIGJ5IGZvcmNlKQoKYGBge3IgZmlndXJlIGhlYXRtYXAgczQsIGZpZy53aWR0aCA9IDUsIGZpZy5oZWlnaHQgPSA3fQpmYWN0b3JzX3M0IDwtIGZhLnNvcnQoZmEoZDRfYWxsLCBuZmFjdG9ycyA9IDMsIGNvciA9IGNob3NlbkNvclR5cGUsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUpJGxvYWRpbmdzW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBsZWZ0X2pvaW4od29yZGluZ19zNCkgJT4lCiAgc2VsZWN0KHdvcmRpbmcsIE1SMSwgTVIyLCBNUjMpICU+JQogIHJlbmFtZShjYXBhY2l0eSA9IHdvcmRpbmcsIEZhY3RvcjEgPSBNUjEsIEZhY3RvcjIgPSBNUjIsIEZhY3RvcjMgPSBNUjMpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAib3JkZXIiKSAlPiUKICBtdXRhdGUob3JkZXIgPSBhcy5udW1lcmljKG9yZGVyKSkKCmZhY3RvcnNfczRfbG9uZyA8LSBmYWN0b3JzX3M0ICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSwgLW9yZGVyKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYxIiwgIkYzIiwgIkYyIikpKSAlPiUKICAjIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpLAogICMgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJGMiIsICJGMSIsICJGMyIpKSkgJT4lCiAgYXJyYW5nZShvcmRlciwgZmFjdG9yKQoKZmFjdG9yc19zNF9ibGFuazEgPC0gZmFjdG9yc19zNF9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczRfbG9uZyRsb2FkaW5nKSkpCiMgZmFjdG9yc19zNF9ibGFuazIgPC0gZmFjdG9yc19zNF9sb25nICU+JQojICAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yID09ICJGMSIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3M0X2xvbmckbG9hZGluZykqMi8zKSkpCmZhY3RvcnNfczRfYmxhbmsyIDwtIGZhY3RvcnNfczRfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgPT0gIkYyIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczRfbG9uZyRsb2FkaW5nKSoyLzMpKSkKZmFjdG9yc19zNF9ibGFuazMgPC0gZmFjdG9yc19zNF9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciAhPSAiRjMiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zNF9sb25nJGxvYWRpbmcpKjEvMykpKQoKIyBnZ3Bsb3QoZmFjdG9yc19zNF9ibGFuazEsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3M0X2JsYW5rMiwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKIyAKIyBnZ3Bsb3QoZmFjdG9yc19zNF9ibGFuazMsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCgpnZ3Bsb3QoZmFjdG9yc19zNF9sb25nLCBhZXMoeCA9IGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSksIHNpemUgPSA2KSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwogIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMC41MSwgeG1heCA9IDEuNDksIHltaW4gPSAxNC41NSwgeW1heCA9IDIwLjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAxLjUxLCB4bWF4ID0gMi40OSwgeW1pbiA9IDYuNTUsIHltYXggPSAxNC40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMi41MSwgeG1heCA9IDMuNDksIHltaW4gPSAwLjU1LCB5bWF4ID0gNi40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgdGhlbWVfYncoKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCmBgYAoKIyMgTWVhbiByYXRpbmdzCgojIyMgU3R1ZGllcyAxLTIKCk1lYW4gcmF0aW5ncyBvZiA0MCBtZW50YWwgY2FwYWNpdGllcyBmb3IgdGhlIDIgZW50aXRpZXMgaW5jbHVkZWQgaW4gU3R1ZGllcyAxLTIuIFBhcnRpY2lwYW50cyByZXNwb25kZWQgb24gYSAzLXBvaW50IHNjYWxlICgwID0gIm5vIiwgMC41ID0gImtpbmRhIiwgMSA9ICJ5ZXMiKS4gRXJyb3IgYmFycyBhcmUgbm9ucGFyYW1ldHJpYyBib290c3RyYXBwZWQgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLiBNZW50YWwgY2FwYWNpdGllcyBhcmUgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlaXIgZG9taW5hbnQgZmFjdG9yIGxvYWRpbmcgaW4gU3R1ZHkgMSAoYWR1bHRzKS4KCmBgYHtyIGZpZ3VyZSBtZWFuIHJhdGluZ3MgczEtczIsIGZpZy53aWR0aCA9IDMsIGZpZy5oZWlnaHQgPSAzfQojIG1ha2UgZGF0YWZyYW1lCnMxMl9wbG90dGluZyA8LSBjaGFyX3Bsb3R0aW5nICU+JQogIGZpbHRlcihzdHVkeSAlaW4lIGMoInN0dWR5IDEiLCAic3R1ZHkgMiIpKSAlPiUKICBkaXN0aW5jdCgpCgojIHBsb3QhIChvcmRlcmVkIGJ5IHN0dWR5IDMgZmFjdG9yIGxvYWRpbmdzKQpzMTIgPC0gZ2dwbG90KHMxMl9wbG90dGluZywKICAgICAgICAgICAgICAgYWVzKHkgPSBzdW1tYXJ5X21lYW5fbmEsIHggPSByZW9yZGVyKHdvcmRpbmcsIGRlc2MoczFfb3JkZXIpKSwKICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGZhY3RvcihzMV9jb2xvciksIHNoYXBlID0gc3R1ZHkpKSArCiAgZ2VvbV9wb2ludChzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNiksIHNpemUgPSAyKSArCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IHN1bW1hcnlfY2lfbG93ZXJfbmEsIHltYXggPSBzdW1tYXJ5X2NpX3VwcGVyX25hKSwgd2lkdGggPSAwLjQsCiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC42KSkgKwogIGZhY2V0X3dyYXAofiBjaGFyYWN0ZXIpICsKICB0aGVtZV9idygpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJcbk1lYW4gcmF0aW5nIiwKICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gYygwLCAwLjUsIDEpLAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCIwXG4obm8pIiwgIjAuNVxuKGtpbmRhKSIsICIxXG4oeWVzKSIpKSArCiAgc2NhbGVfc2hhcGVfZGlzY3JldGUobmFtZSA9ICJTdHVkeToiLAogICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlN0dWR5IDE6IGFkdWx0cyIsICJTdHVkeSAyOiA3LTl5IikpICsKICAjIHNjYWxlX2NvbG91cl9icmV3ZXIobmFtZSA9ICJGYWN0b3I6IiwKICAjICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJxdWFsIiwgcGFsZXR0ZSA9IDYsCiAgIyAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gRkFMU0UpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKG5hbWUgPSAiRmFjdG9yOiIsCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKCIjRTQxQTFDIiwgIiM0REFGNEEiLCAiIzM3N0VCOCIpLAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQk9EWSIsICJNSU5EIiwgIkhFQVJUIikpICsKICBjb29yZF9mbGlwKCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDkpLAogICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiaXRhbGljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gcGFsZXR0ZV9zMSksCiAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJyaWdodCIpCgpzMTIKYGBgCgojIyMgU3R1ZGllcyAzLTQKCk1lYW4gcmF0aW5ncyBvZiAyMCBtZW50YWwgY2FwYWNpdGllcyBmb3IgdGhlIDkgZW50aXRpZXMgaW5jbHVkZWQgaW4gU3R1ZGllcyAzLTQuIFBhcnRpY2lwYW50cyByZXNwb25kZWQgb24gYSAzLXBvaW50IHNjYWxlICgwID0gIm5vIiwgMC41ID0gImtpbmRhIiwgMSA9ICJ5ZXMiKS4gRXJyb3IgYmFycyBhcmUgbm9ucGFyYW1ldHJpYyBib290c3RyYXBwZWQgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLiBNZW50YWwgY2FwYWNpdGllcyBhcmUgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlaXIgZG9taW5hbnQgZmFjdG9yIGxvYWRpbmcgaW4gU3R1ZHkgMyAoNy05eSkuCgpgYGB7ciBmaWd1cmUgbWVhbiByYXRpbmdzIHMzLXM0LCBmaWcud2lkdGggPSA1LCBmaWcuaGVpZ2h0ID0gM30KIyBtYWtlIGRhdGFmcmFtZQpzMzRfcGxvdHRpbmcgPC0gY2hhcl9wbG90dGluZyAlPiUKICBmaWx0ZXIoc3R1ZHkgJWluJSBjKCJzdHVkeSAzIiwgInN0dWR5IDQiKSwKICAgICAgICAgIWlzLm5hKHMzX29yZGVyKSwgIWlzLm5hKGNoYXJhY3RlciksICFpcy5uYShjYXBhY2l0eSkpICU+JQogIGRpc3RpbmN0KCkgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjb21wdXRlciIsICJkb2xsIiwgInRlZGR5X2JlYXIiLCAicm9ib3QiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZXRsZSIsICJiaXJkIiwgIm1vdXNlIiwgImdvYXQiLCAiZWxlcGhhbnQiKSkpCgojIHBsb3QhIChvcmRlcmVkIGJ5IHN0dWR5IDMgZmFjdG9yIGxvYWRpbmdzKQpzMzQgPC0gZ2dwbG90KHMzNF9wbG90dGluZywKICAgICAgICAgICAgICAgYWVzKHkgPSBzdW1tYXJ5X21lYW5fbmEsIHggPSByZW9yZGVyKHdvcmRpbmcsIGRlc2MoczNfb3JkZXIpKSwgCiAgICAgICAgICAgICAgICAgICAjIGNvbG91ciA9IHN0dWR5LAogICAgICAgICAgICAgICAgICAgY29sb3VyID0gczNfY29sb3IsCiAgICAgICAgICAgICAgICAgICBzaGFwZSA9IHN0dWR5KSkgKwogIGdlb21fcG9pbnQoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjYpLCBzaXplID0gMikgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBzdW1tYXJ5X2NpX2xvd2VyX25hLCB5bWF4ID0gc3VtbWFyeV9jaV91cHBlcl9uYSksIHdpZHRoID0gMC40LAogICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNikpICsKICBmYWNldF93cmFwKH4gY2hhcmFjdGVyLCBuY29sID0gOSkgKwogIHRoZW1lX2J3KCkgKwogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIlxuTWVhbiByYXRpbmciLAogICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKDAsIDEpLAogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBjKDAsIDAuNSwgMSksCiAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIjBcbihubykiLCAiMC41XG4oa2luZGEpIiwgIjFcbih5ZXMpIikpICsKICBzY2FsZV9zaGFwZV9kaXNjcmV0ZShuYW1lID0gIlN0dWR5OiIsCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU3R1ZHkgMzogNy05eSIsICJTdHVkeSA0OiA0LTZ5IikpICsKICAjIHNjYWxlX2NvbG91cl9kaXNjcmV0ZShuYW1lID0gIlN0dWR5OiIsCiAgIyAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTdHVkeSAzOiA3LTl5IiwgIlN0dWR5IDQ6IDQtNnkiKSkgKwogICMgc2NhbGVfY29sb3VyX2JyZXdlcihuYW1lID0gIkZhY3RvcjoiLAogICMgICAgICAgICAgICAgICAgICAgICB0eXBlID0gInF1YWwiLCBwYWxldHRlID0gNiwKICAjICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBGQUxTRSkgKwogIHNjYWxlX2NvbG91cl9tYW51YWwobmFtZSA9ICJGYWN0b3I6IiwKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMoIiNFNDFBMUMiLCAiIzM3N0VCOCIsICIjNERBRjRBIiksCiAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJCT0RZIiwgIkhFQVJUIiwgIk1JTkQiKSkgKwogIGNvb3JkX2ZsaXAoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gOSksCiAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJpdGFsaWMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb2xvdXIgPSBwYWxldHRlX3MxKSwKICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpCgpzMzQKYGBgCgojIE1lYW4gZmFjdG9yIHNjb3JlcwoKIyMgU3R1ZGllcyAxLTIKCmBgYHtyIHMxMiBhbGwgbm8gcm90YXRpb24sIGluY2x1ZGUgPSBGfQojIG1ha2UgY29tYmluZWQgZGF0YXNldApkMTJfYWxsIDwtIGQxX2FsbCAlPiUgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpICU+JQogIGZ1bGxfam9pbihkMl9hbGwgJT4lIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJzdWJpZCIpCgojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkMTJfYWxsKQoKIyBydW4gRUZBIHdpdGhvdXQgcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QxMl9hbGxfdW5yb3RhdGVkIDwtIGZhKGQxMl9hbGwsIDEzLCByb3RhdGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kMTJfYWxsX3Vucm90YXRlZCkKCiMgZXhhbWluZSBlaWdlbnZhbHVlcyBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkCmVmYV9kMTJfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyA8LSBwcmludChlZmFfZDEyX2FsbF91bnJvdGF0ZWQpJFZhY2NvdW50ZWQgJT4lCiAgdCgpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBjb3VudCBmYWN0b3JzIHdpdGggZWlnZW52YWx1ZXMgPiAxIGFuZCB2YXJpYW5jZSBleHBsYWluZWQgPiA1JQplZmFfZDEyX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMgPC0gZWZhX2QxMl9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzICU+JQogIGZpbHRlcihTUy5sb2FkaW5ncyA+IDEsIFByb3BvcnRpb24uRXhwbGFpbmVkID4gMC4wNSkgJT4lCiAgY291bnQoKSAlPiUKICBhcy5udW1lcmljKCkKZWZhX2QxMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzCmBgYAoKYGBge3IgczEyIGFsbCByb3RhdGlvbiwgaW5jbHVkZSA9IEZ9CmVmYV9kMTJfYWxsX3JvdGF0ZWRfbWF4IDwtIGZhKGQxMl9hbGwsIDEzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKZWZhX2QxMl9hbGxfcm90YXRlZCA8LSBmYShkMTJfYWxsLCBlZmFfZDEyX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgojIGNoZWNrIHRoYXQgZWFjaCBvZiB0aGVzZSBmYWN0b3JzIGlzIHRoZSBkb21pbmFudCBmYWN0b3IgZm9yIGF0IGxlYXN0IG9uZSBtZW50YWwgY2FwYWNpdHkgaXRlbQplZmFfZDEyX2FsbF9yb3RhdGVkX2xvYWRpbmdzIDwtIGZhLnNvcnQobG9hZGluZ3MoZWZhX2QxMl9hbGxfcm90YXRlZClbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShsb2FkaW5nX2FicyA9IGFicyhsb2FkaW5nKSkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGxvYWRpbmdfYWJzKSAlPiUKICB1bmdyb3VwKCkKZWZhX2QxMl9hbGxfcm90YXRlZF9sb2FkaW5ncwoKIyBkcm9wIGFueSBmYWN0b3JzIHdoZXJlIG4gPCAxCmVmYV9kMTJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkKCiMgc2V0IG51bWJlciBvZiBmYWN0b3JzIHRvIGV4dHJhY3QKbmZhY3RvcnNfZDEyX2FsbCA8LSBlZmFfZDEyX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApICU+JQogIG5yb3coKQpuZmFjdG9yc19kMTJfYWxsCmBgYAoKYGBge3IgczEyIGFsbCB2YXJpbWF4IHJvdGF0aW9uLCBpbmNsdWRlID0gRn0KIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QxMl9hbGxfcm90YXRlZE4gPC0gZmEoZDEyX2FsbCwgbmZhY3RvcnNfZDEyX2FsbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yZXMgPSAidGVuQmVyZ2UiLCBtaXNzaW5nID0gVFJVRSkgIyBpbXB1dGUgbWlzc2luZyB2YWx1ZXMKcHJpbnQoZWZhX2QxMl9hbGxfcm90YXRlZE4pCgojIGdldCBsb2FkaW5ncyBmb3IgZWFjaCBmYWN0b3IKZWZhX2QxMl9hbGxfcm90YXRlZE5fbG9hZGluZ3MgPC0gbG9hZGluZ3MoZWZhX2QxMl9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikKYGBgCgpgYGB7ciBzMTIgbG9hZGluZ3MgdGFibGUsIGluY2x1ZGUgPSBGfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QxMl9hbGxfcm90YXRlZE4pKVtdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIk0iKSksIGZ1bnMocm91bmQyKSkKYGBgCgpgYGB7ciBzMTIgZmlndXJlIHNldHVwLCBpbmNsdWRlID0gRn0Kc2NvcmVzX3MxMl9wbG90dGluZyA8LSBkMSAlPiUgCiAgc2VsZWN0KHN1YmlkLCBhZ2VfZ3JvdXAsIGNoYXJhY3RlcikgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihkMiAlPiUgCiAgICAgICAgICAgICAgc2VsZWN0KHN1YmlkLCBhZ2VfZ3JvdXAsIGNoYXJhY3RlcikgJT4lIAogICAgICAgICAgICAgIGRpc3RpbmN0KCkgJT4lIAogICAgICAgICAgICAgIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpKSAlPiUKICBmdWxsX2pvaW4oZWZhX2QxMl9hbGxfcm90YXRlZE4kc2NvcmVzICU+JSAKICAgICAgICAgICAgICBkYXRhLmZyYW1lKCkgJT4lIAogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIpKSAlPiUKICByZW5hbWUoc2NvcmVfRjEgPSBNUjEsIHNjb3JlX0YyID0gTVIyLCBzY29yZV9GMyA9IE1SMykgJT4lCiAgZmlsdGVyKCFpcy5uYShzY29yZV9GMSksICFpcy5uYShzY29yZV9GMiksICFpcy5uYShzY29yZV9GMyksICFpcy5uYShhZ2VfZ3JvdXApKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBzY29yZSwgc3RhcnRzX3dpdGgoInNjb3JlXyIpKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvcikpICU+JQogIG11bHRpX2Jvb3QoY29sdW1uID0gInNjb3JlIiwKICAgICAgICAgICAgIHN1bW1hcnlfZ3JvdXBzID0gYygiYWdlX2dyb3VwIiwgImNoYXJhY3RlciIsICJmYWN0b3IiKSwKICAgICAgICAgICAgIHN0YXRpc3RpY3NfZnVuY3Rpb25zID0gYygibWVhbiIsICJjaV9sb3dlciIsICJjaV91cHBlciIpKQpgYGAKCmBgYHtyIHMxMiByZWdyZXNzaW9ufQp0ZW1wQyA8LSBkMSAlPiUgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgZnVsbF9qb2luKGQyICU+JSBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSkgJT4lCiAgZnVsbF9qb2luKGRhdGEuZnJhbWUoZWZhX2QxMl9hbGxfcm90YXRlZE4kc2NvcmVzKSAlPiUKICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpICU+JQogICAgICAgICAgICAgIGdhdGhlcihmYWN0b3IsIHNjb3JlLCAtc3ViaWQpKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciksCiAgICAgICAgIGFnZV9ncm91cCA9IGZhY3RvcihhZ2VfZ3JvdXApLAogICAgICAgICBjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkgIyAlPiUKICAjIGZpbHRlcighaXMubmEoZmFjdG9yKSwgIWlzLm5hKGFnZV9ncm91cCksICFpcy5uYShjaGFyYWN0ZXIpKQoKY29udHJhc3RzKHRlbXBDJGZhY3RvcikgPSBjYmluZChmYWN0b3IxID0gYygxLCAtMSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yMyA9IGMoMCwgLTEsIDEpKQoKY29udHJhc3RzKHRlbXBDJGFnZV9ncm91cCkgPSBjYmluZChjaGlsZHJlbiA9IGMoLTEsIDEpKQpjb250cmFzdHModGVtcEMkY2hhcmFjdGVyKSA9IGNiaW5kKHJvYm90ID0gYygtMSwgMSkpCgpsaWJyYXJ5KGxtZTQpCnIxIDwtIGxtZXIoc2NvcmUgfiBjaGFyYWN0ZXIgKiBmYWN0b3IgKiBhZ2VfZ3JvdXAgKyAoMSB8IHN1YmlkKSAsIHRlbXBDKQpzdW1tYXJ5KHIxKQoKIyBsaWJyYXJ5KGJybXMpCiMgcjFiIDwtIGJybShzY29yZSB+IGNoYXJhY3RlciAqIGZhY3RvciAqIGFnZV9ncm91cCArICgxIHwgc3ViaWQpICwgdGVtcEMsCiMgICAgICAgICAgICAgZmFtaWx5ID0gImdhdXNzaWFuIikKIyBzdW1tYXJ5KHIxYikKYGBgCgpgYGB7ciBzMTIgZmlndXJlIGZhY3RvciBzY29yZXMgYnkgYWdlIGdyb3VwLCBmaWcud2lkdGggPSA2LCBmaWcuaGVpZ2h0ID0gM30KIyBwbG90CmdncGxvdChzY29yZXNfczEyX3Bsb3R0aW5nICU+JQogICAgICAgICB1bmdyb3VwKCkgJT4lCiAgICAgICAgIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlNvY2lhbC1lbW90aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJvZGlseSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyY2VwdHVhbC1jb2duaXRpdmUiKSksCiAgICAgICAgICAgICAgICBhZ2VfZ3JvdXAgPSBmYWN0b3IoYWdlX2dyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsZXZlbHMgPSBjKCJhZHVsdHMiLCAiY2hpbGRyZW5fNzkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGFiZWxzID0gYygiYWR1bHRzIiwgImNoaWxkcmVuIikpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNoaWxkcmVuXzc5IiwgImFkdWx0cyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiY2hpbGRyZW4iLCAiYWR1bHRzIikpKSwKICAgICAgIGFlcyh4ID0gYWdlX2dyb3VwLCB5ID0gc3VtbWFyeV9tZWFuLCBjb2xvciA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgZmFjZXRfd3JhcCgiZmFjdG9yIiwgbmNvbCA9IDMpICsKICB0aGVtZV9idygpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpICsKICBnZW9tX3BvaW50KHNpemUgPSA1LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC40KSkgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBzdW1tYXJ5X2NpX2xvd2VyLCB5bWF4ID0gc3VtbWFyeV9jaV91cHBlciksCiAgICAgICAgICAgICAgICB3aWR0aCA9IDAuMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNCkpICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxOSwgMTUpKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3Igc2NvcmVzIGJ5IGFnZSBncm91cCIsCiAgICAgICAjIHN1YnRpdGxlID0gIkFkdWx0cyAoU3R1ZHkgMSkgdnMuIGNoaWxkcmVuIChTdHVkeSAyKVxuIiwKICAgICAgIHggPSAiQWdlIGdyb3VwIiwKICAgICAgIHkgPSAiTWVhbiBmYWN0b3Igc2NvcmUiKSAjIDEwMDAgYnkgNTAwCmBgYAoKIyMgU3R1ZHkgMwoKYGBge3IgczMgZmlndXJlIHNldHVwLCBpbmNsdWRlID0gRn0Kc2NvcmVzX3MzX3Bsb3R0aW5nIDwtIGQzICU+JSAKICBzZWxlY3Qoc3ViaWQsIGFnZV9ncm91cCwgY2hhcmFjdGVyKSAlPiUgCiAgZGlzdGluY3QoKSAlPiUgCiAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9kM19hbGxfcm90YXRlZE4kc2NvcmVzICU+JSAKICAgICAgICAgICAgICBkYXRhLmZyYW1lKCkgJT4lIAogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIpKSAlPiUKICByZW5hbWUoc2NvcmVfRjEgPSBNUjEsIHNjb3JlX0YyID0gTVIyLCBzY29yZV9GMyA9IE1SMykgJT4lCiAgZmlsdGVyKCFpcy5uYShzY29yZV9GMSksICFpcy5uYShzY29yZV9GMiksICFpcy5uYShzY29yZV9GMyksICFpcy5uYShhZ2VfZ3JvdXApKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBzY29yZSwgc3RhcnRzX3dpdGgoInNjb3JlXyIpKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvcikpICU+JQogIG11bHRpX2Jvb3QoY29sdW1uID0gInNjb3JlIiwKICAgICAgICAgICAgIHN1bW1hcnlfZ3JvdXBzID0gYygiYWdlX2dyb3VwIiwgImNoYXJhY3RlciIsICJmYWN0b3IiKSwKICAgICAgICAgICAgIHN0YXRpc3RpY3NfZnVuY3Rpb25zID0gYygibWVhbiIsICJjaV9sb3dlciIsICJjaV91cHBlciIpKQpgYGAKCmBgYHtyIHMzIGZpZ3VyZSBmYWN0b3Igc2NvcmVzIGJ5IGNoYXJhY3RlciwgZmlnLndpZHRoID0gNiwgZmlnLmhlaWdodCA9IDN9CmdncGxvdChzY29yZXNfczNfcGxvdHRpbmcgJT4lCiAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHlfYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHkgYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpKSwKICAgICAgICAgICAgICAgIGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygic2NvcmVfRjIiLCAic2NvcmVfRjEiLCAic2NvcmVfRjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwgIkJvZGlseSIsICJQZXJjZXB0dWFsLWNvZ25pdGl2ZSIpKSksCiAgICAgICBhZXMoeCA9IGNoYXJhY3RlciwgeSA9IHN1bW1hcnlfbWVhbiwgY29sb3IgPSBjaGFyYWN0ZXIsIHNoYXBlID0gY2hhcmFjdGVyKSkgKwogIGZhY2V0X3dyYXAofiBmYWN0b3IsIG5jb2wgPSAzKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDUsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjQpKSArCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IHN1bW1hcnlfY2lfbG93ZXIsIHltYXggPSBzdW1tYXJ5X2NpX3VwcGVyKSwgCiAgICAgICAgICAgICAgICB3aWR0aCA9IDAuMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNCkpICsKICAjIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICIjMDBCRkM0IiwgIiNGODc2NkQiLCByZXAoImJsYWNrIiwgNCkpKSArCiAgIyBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxNywgMTUsIDE5LCByZXAoMTcsIDQpKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICIjMDBCRkM0IiwgcmVwKCJncmF5IiwgMiksICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDE3LCAxNSwgcmVwKDE3LCAyKSwgMTksIHJlcCgxNywgNCkpKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3Igc2NvcmVzIGJ5IGNoYXJhY3RlciIsCiAgICAgICB4ID0gIkNoYXJhY3RlciIsCiAgICAgICB5ID0gIk1lYW4gZmFjdG9yIHNjb3JlIikgIyAxMDAwIGJ5IDUwMApgYGAKCgojIyBTdHVkaWVzIDMtNAoKYGBge3IgczM0IGFsbCBubyByb3RhdGlvbiwgaW5jbHVkZSA9IEZ9CiMgbWFrZSBjb21iaW5lZCBkYXRhc2V0CmQzNF9hbGwgPC0gZDNfYWxsICU+JSByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikgJT4lCiAgZnVsbF9qb2luKGQ0X2FsbCAlPiUgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBjb2x1bW5fdG9fcm93bmFtZXMoInN1YmlkIikKCiMgZXhhbWluZSBzY3JlZSBwbG90CmZhLnBhcmFsbGVsKGQzNF9hbGwpCgojIHJ1biBFRkEgd2l0aG91dCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDM0X2FsbF91bnJvdGF0ZWQgPC0gZmEoZDM0X2FsbCwgMTMsIHJvdGF0ZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QzNF9hbGxfdW5yb3RhdGVkKQoKIyBleGFtaW5lIGVpZ2VudmFsdWVzIGFuZCB2YXJpYW5jZSBleHBsYWluZWQKZWZhX2QzNF9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzIDwtIHByaW50KGVmYV9kMzRfYWxsX3Vucm90YXRlZCkkVmFjY291bnRlZCAlPiUKICB0KCkgJT4lCiAgZGF0YS5mcmFtZSgpCgojIGNvdW50IGZhY3RvcnMgd2l0aCBlaWdlbnZhbHVlcyA+IDEgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCA+IDUlCmVmYV9kMzRfYWxsX3Vucm90YXRlZF9uZmFjdG9ycyA8LSBlZmFfZDM0X2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgJT4lCiAgZmlsdGVyKFNTLmxvYWRpbmdzID4gMSwgUHJvcG9ydGlvbi5FeHBsYWluZWQgPiAwLjA1KSAlPiUKICBjb3VudCgpICU+JQogIGFzLm51bWVyaWMoKQplZmFfZDM0X2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMKYGBgCgpgYGB7ciBzMzQgYWxsIHJvdGF0aW9uLCBpbmNsdWRlID0gRn0KZWZhX2QzNF9hbGxfcm90YXRlZF9tYXggPC0gZmEoZDM0X2FsbCwgMTMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgplZmFfZDM0X2FsbF9yb3RhdGVkIDwtIGZhKGQzNF9hbGwsIGVmYV9kMzRfYWxsX3Vucm90YXRlZF9uZmFjdG9ycywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCiMgY2hlY2sgdGhhdCBlYWNoIG9mIHRoZXNlIGZhY3RvcnMgaXMgdGhlIGRvbWluYW50IGZhY3RvciBmb3IgYXQgbGVhc3Qgb25lIG1lbnRhbCBjYXBhY2l0eSBpdGVtCmVmYV9kMzRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgPC0gZmEuc29ydChsb2FkaW5ncyhlZmFfZDM0X2FsbF9yb3RhdGVkKVtdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSkgJT4lCiAgbXV0YXRlKGxvYWRpbmdfYWJzID0gYWJzKGxvYWRpbmcpKSAlPiUKICBncm91cF9ieShjYXBhY2l0eSkgJT4lCiAgdG9wX24oMSwgbG9hZGluZ19hYnMpICU+JQogIHVuZ3JvdXAoKQplZmFfZDM0X2FsbF9yb3RhdGVkX2xvYWRpbmdzCgojIGRyb3AgYW55IGZhY3RvcnMgd2hlcmUgbiA8IDEKZWZhX2QzNF9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKQoKIyBzZXQgbnVtYmVyIG9mIGZhY3RvcnMgdG8gZXh0cmFjdApuZmFjdG9yc19kMzRfYWxsIDwtIGVmYV9kMzRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkgJT4lCiAgbnJvdygpCm5mYWN0b3JzX2QzNF9hbGwKYGBgCgpgYGB7ciBzMzQgYWxsIHZhcmltYXggcm90YXRpb24sIGluY2x1ZGUgPSBGfQojIHJ1biBFRkEgd2l0aCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDM0X2FsbF9yb3RhdGVkTiA8LSBmYShkMzRfYWxsLCBuZmFjdG9yc19kMzRfYWxsLCAKICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JlcyA9ICJ0ZW5CZXJnZSIsIG1pc3NpbmcgPSBUUlVFKSAjIGltcHV0ZSBtaXNzaW5nIHZhbHVlcwpwcmludChlZmFfZDM0X2FsbF9yb3RhdGVkTikKCiMgZ2V0IGxvYWRpbmdzIGZvciBlYWNoIGZhY3RvcgplZmFfZDM0X2FsbF9yb3RhdGVkTl9sb2FkaW5ncyA8LSBsb2FkaW5ncyhlZmFfZDM0X2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lIAogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKQpgYGAKCmBgYHtyIHMzNCBsb2FkaW5ncyB0YWJsZSwgaW5jbHVkZSA9IEZ9CmRhdGEuZnJhbWUobG9hZGluZ3MoZmEuc29ydChlZmFfZDM0X2FsbF9yb3RhdGVkTikpW10pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTSIpKSwgZnVucyhyb3VuZDIpKQpgYGAKCmBgYHtyIHMzNCBmaWd1cmUgc2V0dXAsIGluY2x1ZGUgPSBGfQpzY29yZXNfczM0X3Bsb3R0aW5nIDwtIGQzICU+JSAKICBzZWxlY3Qoc3ViaWQsIGFnZV9ncm91cCwgY2hhcmFjdGVyKSAlPiUgCiAgZGlzdGluY3QoKSAlPiUgCiAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgZnVsbF9qb2luKGQ0ICU+JSAKICAgICAgICAgICAgICBzZWxlY3Qoc3ViaWQsIGFnZV9ncm91cCwgY2hhcmFjdGVyKSAlPiUgCiAgICAgICAgICAgICAgZGlzdGluY3QoKSAlPiUgCiAgICAgICAgICAgICAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkpICU+JQogIGZ1bGxfam9pbihlZmFfZDM0X2FsbF9yb3RhdGVkTiRzY29yZXMgJT4lIAogICAgICAgICAgICAgIGRhdGEuZnJhbWUoKSAlPiUgCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICU+JQogIHJlbmFtZShzY29yZV9GMSA9IE1SMSwgc2NvcmVfRjIgPSBNUjIsIHNjb3JlX0YzID0gTVIzKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHNjb3JlX0YxKSwgIWlzLm5hKHNjb3JlX0YyKSwgIWlzLm5hKHNjb3JlX0YzKSwgIWlzLm5hKGFnZV9ncm91cCkpICU+JQogIGdhdGhlcihmYWN0b3IsIHNjb3JlLCBzdGFydHNfd2l0aCgic2NvcmVfIikpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yKSkgJT4lCiAgbXVsdGlfYm9vdChjb2x1bW4gPSAic2NvcmUiLAogICAgICAgICAgICAgc3VtbWFyeV9ncm91cHMgPSBjKCJhZ2VfZ3JvdXAiLCAiY2hhcmFjdGVyIiwgImZhY3RvciIpLAogICAgICAgICAgICAgc3RhdGlzdGljc19mdW5jdGlvbnMgPSBjKCJtZWFuIiwgImNpX2xvd2VyIiwgImNpX3VwcGVyIikpCmBgYAoKYGBge3IgczM0IGZpZ3VyZSBmYWN0b3Igc2NvcmVzIGJ5IGFnZSBncm91cCwgZmlnLndpZHRoID0gNiwgZmlnLmhlaWdodCA9IDN9CiMgcGxvdApnZ3Bsb3Qoc2NvcmVzX3MzNF9wbG90dGluZyAlPiUKICAgICAgICAgdW5ncm91cCgpICU+JQogICAgICAgICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlciwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29tcHV0ZXIiLCAicm9ib3QiLCAiZG9sbCIsICJ0ZWRkeV9iZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWV0bGUiLCAiYmlyZCIsICJtb3VzZSIsICJnb2F0IiwgImVsZXBoYW50IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiY29tcHV0ZXIiLCAicm9ib3QiLCAiZG9sbCIsICJ0ZWRkeSBiZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWV0bGUiLCAiYmlyZCIsICJtb3VzZSIsICJnb2F0IiwgImVsZXBoYW50IikpLAogICAgICAgICAgICAgICAgZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJzY29yZV9GMiIsICJzY29yZV9GMSIsICJzY29yZV9GMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlNvY2lhbC1lbW90aW9uYWwiLCAiQm9kaWx5IiwgIlBlcmNlcHR1YWwtY29nbml0aXZlIikpLAogICAgICAgICAgICAgICAgYWdlX2dyb3VwID0gZmFjdG9yKGFnZV9ncm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNoaWxkcmVuXzQ2IiwgImNoaWxkcmVuXzc5IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCI0LTZ5IiwgIjctOXkiKSkpLAogICAgICAgYWVzKHggPSBjaGFyYWN0ZXIsIHkgPSBzdW1tYXJ5X21lYW4sIGNvbG9yID0gY2hhcmFjdGVyLCBzaGFwZSA9IGFnZV9ncm91cCkpICsKICBmYWNldF93cmFwKH4gZmFjdG9yLCBuY29sID0gMykgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIikgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDUsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjQpKSArCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IHN1bW1hcnlfY2lfbG93ZXIsIHltYXggPSBzdW1tYXJ5X2NpX3VwcGVyKSwgCiAgICAgICAgICAgICAgICB3aWR0aCA9IDAuMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNCkpICsKICAjIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICIjMDBCRkM0IiwgIiNGODc2NkQiLCByZXAoImJsYWNrIiwgNCkpKSArCiAgIyBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxNywgMTUsIDE5LCByZXAoMTcsIDQpKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICIjMDBCRkM0IiwgcmVwKCJncmF5IiwgMiksICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSwKICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBjaGFyYWN0ZXIgYW5kIGFnZSBncm91cCIsCiAgICAgICB4ID0gIkNoYXJhY3RlciIsCiAgICAgICB5ID0gIk1lYW4gZmFjdG9yIHNjb3JlIiwKICAgICAgIHNoYXBlID0gIkFnZSBncm91cDogIikgIyAxMDAwIGJ5IDUwMApgYGAKCiMgRmFjdG9yIHNjb3JlcyBieSBhZ2UKCiMjIFN0dWR5IDEKCmBgYHtyIHMxIGZhY3RvciBzY29yZXMgYnkgYWdlIHNldHVwLCBmaWcud2lkdGggPSA2LCBmaWcuaGVpZ2h0ID0gM30Kc2NvcmVzX3MxX3Bsb3R0aW5nIDwtIGQxICU+JSAKICBzZWxlY3Qoc3ViaWQsIGFnZSwgY2hhcmFjdGVyKSAlPiUgCiAgZGlzdGluY3QoKSAlPiUgCiAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9kMV9hbGxfcm90YXRlZE4kc2NvcmVzICU+JSAKICAgICAgICAgICAgICBkYXRhLmZyYW1lKCkgJT4lIAogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIpKSAlPiUKICByZW5hbWUoc2NvcmVfRjEgPSBNUjEsIHNjb3JlX0YyID0gTVIyLCBzY29yZV9GMyA9IE1SMykgJT4lCiAgZmlsdGVyKCFpcy5uYShzY29yZV9GMSksICFpcy5uYShzY29yZV9GMiksICFpcy5uYShzY29yZV9GMyksICFpcy5uYShhZ2UpKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBzY29yZSwgc3RhcnRzX3dpdGgoInNjb3JlXyIpKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvcikpCgpnZ3Bsb3Qoc2NvcmVzX3MxX3Bsb3R0aW5nICU+JQogICAgICAgICB1bmdyb3VwKCkgJT4lCiAgICAgICAgIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoInNjb3JlX0YxIiwgInNjb3JlX0YyIiwgInNjb3JlX0YzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU29jaWFsLWVtb3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQm9kaWx5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQZXJjZXB0dWFsLWNvZ25pdGl2ZSIpKSksCiAgICAgICBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlLCBjb2xvciA9IGNoYXJhY3RlciwgZmlsbCA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgZmFjZXRfd3JhcCgiZmFjdG9yIiwgbmNvbCA9IDMpICsKICB0aGVtZV9idygpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIGFscGhhID0gMC40KSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQpICsKICBnZW9tX3BvaW50KHNpemUgPSAyKSArCiAgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTksIDE1KSkgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBhZHVsdHMnIGFnZSIsCiAgICAgICAjIHN1YnRpdGxlID0gIkFkdWx0cyAoU3R1ZHkgMSlcbiIsCiAgICAgICB4ID0gIkFnZSAoeWVhcnMpIiwKICAgICAgIHkgPSAiRmFjdG9yIHNjb3JlIikgIyAxMDAwIGJ5IDUwMApgYGAKCiMjIFN0dWR5IDIKCmBgYHtyIHMyIGZhY3RvciBzY29yZXMgYnkgYWdlIHNldHVwLCBmaWcud2lkdGggPSA2LCBmaWcuaGVpZ2h0ID0gM30Kc2NvcmVzX3MyX3Bsb3R0aW5nIDwtIGQyICU+JSAKICBzZWxlY3Qoc3ViaWQsIGFnZSwgY2hhcmFjdGVyKSAlPiUgCiAgZGlzdGluY3QoKSAlPiUgCiAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9kMl9hbGxfcm90YXRlZE4kc2NvcmVzICU+JSAKICAgICAgICAgICAgICBkYXRhLmZyYW1lKCkgJT4lIAogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIpKSAlPiUKICByZW5hbWUoc2NvcmVfRjEgPSBNUjEsIHNjb3JlX0YyID0gTVIyLCBzY29yZV9GMyA9IE1SMykgJT4lCiAgZmlsdGVyKCFpcy5uYShzY29yZV9GMSksICFpcy5uYShzY29yZV9GMiksICFpcy5uYShzY29yZV9GMyksICFpcy5uYShhZ2UpKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBzY29yZSwgc3RhcnRzX3dpdGgoInNjb3JlXyIpKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvcikpCgpnZ3Bsb3Qoc2NvcmVzX3MyX3Bsb3R0aW5nICU+JQogICAgICAgICB1bmdyb3VwKCkgJT4lCiAgICAgICAgIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlNvY2lhbC1lbW90aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJvZGlseSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyY2VwdHVhbC1jb2duaXRpdmUiKSkpLAogICAgICAgYWVzKHggPSBhZ2UsIHkgPSBzY29yZSwgY29sb3IgPSBjaGFyYWN0ZXIsIGZpbGwgPSBjaGFyYWN0ZXIsIHNoYXBlID0gY2hhcmFjdGVyKSkgKwogIGZhY2V0X3dyYXAoImZhY3RvciIsIG5jb2wgPSAzKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAibG9lc3MiLCBhbHBoYSA9IDAuNCkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40KSArCiAgZ2VvbV9wb2ludChzaXplID0gMikgKwogIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDE5LCAxNSkpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBzY29yZXMgYnkgY2hpbGRyZW4ncyBhZ2UiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJDaGlsZHJlbiAoU3R1ZHkgMilcbiIsCiAgICAgICB4ID0gIkFnZSAoeWVhcnMpIiwKICAgICAgIHkgPSAiRmFjdG9yIHNjb3JlIikgIyAxMDAwIGJ5IDUwMApgYGAKCiMjIFN0dWRpZXMgMS0yCgpgYGB7ciBzMTIgc2NhdHRlciBwbHVzIG1lYW4gc2NvcmVzIGJ5IGFnZSBzZXR1cCwgZmlnLndpZHRoID0gNSwgZmlnLmhlaWdodCA9IDN9CnRlbXBBIDwtIGQyICU+JSAKICBzZWxlY3Qoc3ViaWQsIGFnZSwgY2hhcmFjdGVyKSAlPiUgCiAgZGlzdGluY3QoKSAlPiUgCiAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9kMTJfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUgCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JSAKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJvZGlseSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQZXJjZXB0dWFsLWNvZ25pdGl2ZSIpKSkKCnRlbXBCIDwtIHNjb3Jlc19zMTJfcGxvdHRpbmcgJT4lCiAgZmlsdGVyKGFnZV9ncm91cCA9PSAiYWR1bHRzIikgJT4lCiAgdW5ncm91cCgpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU29jaWFsLWVtb3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyY2VwdHVhbC1jb2duaXRpdmUiKSksCiAgICAgICAgIGFnZSA9IDExKSAKCmdncGxvdCh0ZW1wQSwKICAgICAgIGFlcyh4ID0gYWdlLCB5ID0gc2NvcmUsIGNvbG9yID0gY2hhcmFjdGVyLCBmaWxsID0gY2hhcmFjdGVyLCBzaGFwZSA9IGNoYXJhY3RlcikpICsKICBmYWNldF93cmFwKCJmYWN0b3IiLCBuY29sID0gMykgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIGFscGhhID0gMC40KSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQpICsKICBnZW9tX3BvaW50KHNpemUgPSAyKSArCiAgZ2VvbV9wb2ludChkYXRhID0gdGVtcEIsIGFlcyh5ID0gc3VtbWFyeV9tZWFuKSwKICAgICAgICAgICAgIHNpemUgPSA0LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC42KSkgKwogIGdlb21fZXJyb3JiYXIoZGF0YSA9IHRlbXBCLCBhZXMoeW1pbiA9IHN1bW1hcnlfY2lfbG93ZXIsIHltYXggPSBzdW1tYXJ5X2NpX3VwcGVyLCB5ID0gc3VtbWFyeV9tZWFuKSwgd2lkdGggPSAwLjQsCiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC42KSkgKwogIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDE5LCAxNSkpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gYyg3OjExKSwgbGFiZWxzID0gYygiN3kiLCAiOHkiLCAiOXkiLCAiMTB5IiwgImFkdWx0cyIpKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3Igc2NvcmVzIGJ5IGFnZSIsCiAgICAgICAjIHN1YnRpdGxlID0gIkNoaWxkcmVuIChTdHVkeSAyKVxuIiwKICAgICAgIHggPSAiQWdlIiwKICAgICAgIHkgPSAiRmFjdG9yIHNjb3JlIikgIyAxMDAwIGJ5IDUwMApgYGAKCiMjIFN0dWRpZXMgMy00CgpgYGB7ciBzMzQgZmFjdG9yIHNjb3JlcyBieSBhZ2Ugc2V0dXAsIGZpZy53aWR0aCA9IDUsIGZpZy5oZWlnaHQgPSAxMH0Kc2NvcmVzX3MzNF9wbG90dGluZyA8LSBkMyAlPiUKICBzZWxlY3QoYWdlX2dyb3VwLCBzdWJpZCwgYWdlLCBjaGFyYWN0ZXIpICU+JQogIGRpc3RpbmN0KCkgJT4lCiAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgZnVsbF9qb2luKGQ0ICU+JQogICAgICAgICAgICAgIHNlbGVjdChhZ2VfZ3JvdXAsIHN1YmlkLCBhZ2UsIGNoYXJhY3RlcikgJT4lCiAgICAgICAgICAgICAgZGlzdGluY3QoKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9kMzRfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUKICAgICAgICAgICAgICBkYXRhLmZyYW1lKCkgJT4lCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICU+JQogIG11dGF0ZShhZ2UgPSBpZmVsc2UoYWdlIDwgMy41LCBOQSwgYWdlKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKQoKZ2dwbG90KHNjb3Jlc19zMzRfcGxvdHRpbmcgJT4lCiAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygic2NvcmVfRjEiLCAic2NvcmVfRjIiLCAic2NvcmVfRjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQZXJjZXB0dWFsLWNvZ25pdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQm9kaWx5IikpLAogICAgICAgICAgICAgICAgY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjb21wdXRlciIsICJyb2JvdCIsICJkb2xsIiwgInRlZGR5X2JlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZXRsZSIsICJiaXJkIiwgIm1vdXNlIiwgImdvYXQiLCAiZWxlcGhhbnQiKSkpLAogICAgICAgIyBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlLCBjb2xvciA9IGNoYXJhY3RlciwgZmlsbCA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgICAgICBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlLCBncm91cCA9IGFnZV9ncm91cCkpICsKICAjIGZhY2V0X3dyYXAoImZhY3RvciIsIG5jb2wgPSAzKSArCiAgIyBmYWNldF9ncmlkKGZhY3RvciB+IGNoYXJhY3RlcikgKwogIGZhY2V0X2dyaWQoY2hhcmFjdGVyIH4gZmFjdG9yKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgYWxwaGEgPSAwLjQpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuNCkgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQsIGZvcm11bGEgPSB5IH4gcG9seSh4LCAyKSkgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQsIGZvcm11bGEgPSB5IH4gcG9seSh4LCAzKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDIsIDEyLCAyKSkgKwogICMgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSkpICsKICAjIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICIjMDBCRkM0IiwgcmVwKCJncmF5IiwgMiksICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogICMgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTcsIDE1LCByZXAoMTcsIDIpLCAxOSwgcmVwKDE3LCA0KSkpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBzY29yZXMgYnkgY2hpbGRyZW4ncyBhZ2UiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJDaGlsZHJlbiAoU3R1ZGllcyAzLTQpXG4iLAogICAgICAgeCA9ICJBZ2UgKHllYXJzKSIsCiAgICAgICB5ID0gIkZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKCmdncGxvdChzY29yZXNfczM0X3Bsb3R0aW5nICU+JQogICAgICAgICB1bmdyb3VwKCkgJT4lCiAgICAgICAgIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoInNjb3JlX0YxIiwgInNjb3JlX0YyIiwgInNjb3JlX0YzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU29jaWFsLWVtb3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyY2VwdHVhbC1jb2duaXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJvZGlseSIpKSwKICAgICAgICAgICAgICAgIGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29tcHV0ZXIiLCAicm9ib3QiLCAiZG9sbCIsICJ0ZWRkeV9iZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWV0bGUiLCAiYmlyZCIsICJtb3VzZSIsICJnb2F0IiwgImVsZXBoYW50IikpKSwKICAgICAgIGFlcyh4ID0gYWdlLCB5ID0gc2NvcmUpKSArCiAgICAgICAjIGFlcyh4ID0gYWdlLCB5ID0gc2NvcmUsIGdyb3VwID0gYWdlX2dyb3VwKSkgKwogICMgZmFjZXRfd3JhcCgiZmFjdG9yIiwgbmNvbCA9IDMpICsKICAjIGZhY2V0X2dyaWQoZmFjdG9yIH4gY2hhcmFjdGVyKSArCiAgZmFjZXRfZ3JpZChjaGFyYWN0ZXIgfiBmYWN0b3IpICsKICB0aGVtZV9idygpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAibG9lc3MiLCBhbHBoYSA9IDAuNCkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40KSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuNCwgZm9ybXVsYSA9IHkgfiBwb2x5KHgsIDIpKSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuNCwgZm9ybXVsYSA9IHkgfiBwb2x5KHgsIDMpKSArCiAgZ2VvbV9wb2ludChzaXplID0gMikgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoMiwgMTIsIDIpKSArCiAgIyBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICIjMDBCRkM0IiwgcmVwKCJncmF5IiwgMiksICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogICMgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgIiMwMEJGQzQiLCByZXAoImdyYXkiLCAyKSwgIiNGODc2NkQiLCByZXAoImJsYWNrIiwgNCkpKSArCiAgIyBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxNywgMTUsIHJlcCgxNywgMiksIDE5LCByZXAoMTcsIDQpKSkgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBjaGlsZHJlbidzIGFnZSIsCiAgICAgICAjIHN1YnRpdGxlID0gIkNoaWxkcmVuIChTdHVkaWVzIDMtNClcbiIsCiAgICAgICB4ID0gIkFnZSAoeWVhcnMpIiwKICAgICAgIHkgPSAiRmFjdG9yIHNjb3JlIikgIyAxMDAwIGJ5IDUwMApgYGAK